失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android常驻型广播 Android 常驻广播和非常驻广播

android常驻型广播 Android 常驻广播和非常驻广播

时间:2023-08-23 10:08:55

相关推荐

android常驻型广播 Android 常驻广播和非常驻广播

一、知识准备

①常驻广播接受者:使用AndroidManifest.xml注册,接受者不随Activity的销毁而销毁,也就是拥有独立的生命周期。

②非常驻广播接受者:使用registerReceiver(receiver,intentfilter)对广播接收者进行注册。同事需要使用unregisterReceiver(receiver)注销这个广播接收者。注册时表示创建广播接收者,注销时表示销毁这个广播接收者。生命周期由开发者决定。通常在activity的onCreate方法中创建广播接收者,在onDestroy中销毁广播接收者。生命周期可控。

③建议了解/xqz0618/p/msg_broadcast.html

二、项目案例一

【标题】利用非常驻广播接受收到短信的广播

【步骤】

①创建一个广播NReceiver

②在Activity中进行注册

③在Activity销毁时注销

【项目结构】

【NReceiver】

【MainActivity】

1 importandroid.Manifest;2 importandroid.content.BroadcastReceiver;3 importandroid.content.IntentFilter;4 importandroid.content.pm.PackageManager;5 importandroid.support.v4.app.ActivityCompat;6 importandroid.support.v4.content.ContextCompat;7 importandroid.support.v7.app.AppCompatActivity;8 importandroid.os.Bundle;9 importandroid.util.Log;10

11 importcom.example.administrator.myapplication.receiver.NReceiver;12

13 public class MainActivity extendsAppCompatActivity {14

15 BroadcastReceiver receiver = null;16

17 @Override18 protected voidonCreate(Bundle savedInstanceState) {19 super.onCreate(savedInstanceState);20 setContentView(R.layout.activity_main);21 getpermission();22

23 registerBroadcast();24

25 }26

27 private voidgetpermission() {28 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS)29 != PackageManager.PERMISSION_GRANTED||ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.RECEIVE_SMS)30 !=PackageManager.PERMISSION_GRANTED){31 ActivityCompat.requestPermissions(MainActivity.this,newString[]{32 Manifest.permission.READ_SMS,Manifest.permission.RECEIVE_SMS33 },1);34 }35 }36

37 private voidregisterBroadcast() {38 receiver = newNReceiver();39 IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");40 registerReceiver(receiver,filter);41 Log.i("TAG", "registerBroadcast: ---------register");42 }43

44 @Override45 protected voidonDestroy() {46 super.onDestroy();47 unregisterReceiver(receiver);48 }49 }

【提示】由于是要接收短信的广播,所以需要获取权限

【AndroidManifest】

1

2

【提示】非常驻型广播无需在AndroidManifest中进行注册广播。

【效果】

①利用模拟器开发工具模拟发送信息

②将APP完全退出,再发送信息,不再收到提示

二、项目案例二

【标题】常驻型广播接收收到短信的广播

【提示】再项目一得基础上修改

【AndroidManifest】注册

1

3 android:enabled="true"

4 android:exported="true">

5

6

7

8

【MainActivity】

【提示】由于常驻型广播已经在AndroidManifest注册,则无须利用registerReceiver(receiver,intentfilter)进行注册和销毁。Activity中只需进行动态权限的申请

1 public class MainActivity extendsAppCompatActivity {2

3 BroadcastReceiver receiver = null;4

5 @Override6 protected voidonCreate(Bundle savedInstanceState) {7 super.onCreate(savedInstanceState);8 setContentView(R.layout.activity_main);9 getpermission();10

11 }12

13 private voidgetpermission() {14 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS)15 != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECEIVE_SMS)16 !=PackageManager.PERMISSION_GRANTED) {17 ActivityCompat.requestPermissions(MainActivity.this, newString[]{18 Manifest.permission.READ_SMS, Manifest.permission.RECEIVE_SMS19 }, 1);20 }21 }22

23 }

【效果】

如果觉得《android常驻型广播 Android 常驻广播和非常驻广播》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。