Android中如何在有序广播中添加自定义权限

Android中如何在有序广播中添加自定义权限

本文小编为大家详细介绍“Android中如何在有序广播中添加自定义权限”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android中如何在有序广播中添加自定义权限”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Android 中在有序广播中添加自定义权限的实例

Android中如何在有序广播中添加自定义权限

有序广播说明:

有序广播因为要处理消息的处理结果,所以要复杂一些。

* sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);

如果只是想让广播可以按优先级来收取,并不在意处理的结果,可以用下面的版本:

* sendOrderedBroadcast(Intent intent, String receiverPermission);

同样,在多用户环境下,也可以选择给哪个用户发广播:

* sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras);

首先我们要在AndroidManifest.xml中自定义一个权限,格式参考系统自带的权限,Android.permission.XXXXX,只要是xxx.peimission.XXXXXX就行,如果不按照这个格式,那么这个权限可能没法使用。

<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.lsj.broadcasttest"><span><permissionandroid:name="test.permission.TEST"android:protectionLevel="normal"></permission></span><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activityandroid:name=".MainActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><receiverandroid:name=".MyReceiver"android:enabled="true"android:exported="true"><intent-filterandroid:priority="20"><actionandroid:name="hahaha"/></intent-filter></receiver><receiverandroid:name=".MyReceiver2"android:enabled="true"android:exported="true"><intent-filterandroid:priority="19"><actionandroid:name="hahaha"/></intent-filter></receiver></application><span><uses-permissionandroid:name="test.permission.TEST"/></span></manifest>

然后使用sendOrderedBroadcast(intent,"test.permission.TEST");就可以发送有序广播了,当然发送广播之前还要指定一下接受者的优先级,优先级越高,android:priority指定的数字就越大。取值的范围是:-1000~1000这个就不详细叙述了。

publicclassMainActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Buttonsend=(Button)findViewById(R.id.send);send.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent();intent.setAction("hahaha");intent.putExtra("msg","一个简单的消息");sendOrderedBroadcast(intent,"test.permission.TEST");}});}}

第一个BroadcastReceiver在接收到广播的时候,如果想要添加一些自己的东西进去,可以先创建一个Bundle对象,并且存入数据。
然后通过setResultExtras(bundle),把这个bundle添加到原来的消息中,

ublicclassMyReceiverextendsBroadcastReceiver{publicMyReceiver(){}@OverridepublicvoidonReceive(Contextcontext,Intentintent){Toast.makeText(context,"接收到的Intent的Action为:"+intent.getAction()+"\n消息内容是:"+intent.getStringExtra("msg"),Toast.LENGTH_LONG).show();Bundlebundle=newBundle();bundle.putString("first","第一个BroadCast存入的消息!");setResultExtras(bundle);}}

下一个BroadcastReceiver通过getResultExtras可以将信息提取出来。

ublicclassMyReceiver2extendsBroadcastReceiver{publicMyReceiver2(){}@OverridepublicvoidonReceive(Contextcontext,Intentintent){//TODO:ThismethodiscalledwhentheBroadcastReceiverisreceivingBundlebundle=getResultExtras(true);Stringfirst=bundle.getString("first");Toast.makeText(context,"第一个BroadCast存入的消息为:"+first,Toast.LENGTH_LONG).show();}}

读到这里,这篇“Android中如何在有序广播中添加自定义权限”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注恰卡编程网行业资讯频道。

发布于 2022-04-11 21:17:47
收藏
分享
海报
0 条评论
28
上一篇:Android中如何实现动画自动播放功能 下一篇:Android中如何给图片添加水印
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码