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就行,如果不按照这个格式,那么这个权限可能没法使用。

<?xml version="1.0" encoding="utf-8"?>                                                                                                                                 

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

public class MainActivity extends AppCompatActivity {    @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     Button send= (Button) findViewById(R.id.send);     send.setOnClickListener(new View.OnClickListener() {       @Override       public void onClick(View v) {         Intent intent=new Intent();         intent.setAction("hahaha");          intent.putExtra("msg","一个简单的消息");         sendOrderedBroadcast(intent,"test.permission.TEST");       }     });   } } 

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

ublic class MyReceiver extends BroadcastReceiver {   public MyReceiver() {   }    @Override   public void onReceive(Context context, Intent intent) {     Toast.makeText(context,"接收到的Intent的Action为:"+intent.getAction()+"\n消息内容是:"+intent.getStringExtra("msg"),Toast.LENGTH_LONG).show();     Bundle bundle=new Bundle();     bundle.putString("first","第一个BroadCast存入的消息!");     setResultExtras(bundle);    } } 

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

ublic class MyReceiver2 extends BroadcastReceiver {   public MyReceiver2() {   }    @Override   public void onReceive(Context context, Intent intent) {     // TODO: This method is called when the BroadcastReceiver is receiving     Bundle bundle=getResultExtras(true);     String first=bundle.getString("first");     Toast.makeText(context,"第一个BroadCast存入的消息为:"+first,Toast.LENGTH_LONG).show();   } } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多相关文章

  1. android 带EditView(编辑框)的AlertDialog(对话框)及获取输入内容
  2. Android(安卓)友盟快速集成 社会化分享 移动统计
  3. Android(安卓)WindowManager
  4. 详解 Android(安卓)中的 HandlerThread【转】
  5. python搭建服务器实现两个Android客户端间收发消息
  6. android源码分析 - AysncTask
  7. Android(安卓)7.0 调用相机 FileProvider
  8. Android(安卓)6.0+ TelephonyManager 使用示例(1) 获取网络和 SIM
  9. Android开发艺术探索 - 第10章 Android的消息机制

随机推荐

  1. Android输入系统概述
  2. Android 网络:Retrofit 与 Kotlin 协程
  3. Android中自定义PopupWindow,动态弹窗。
  4. RelativeLayout实现百分比布局
  5. android 渗透测试必备工具
  6. android开发笔记1:TextView的属性详解
  7. Android ViewDragHelper(1)
  8. Python实现的基于ADB的Android远程工具
  9. android 类型转换 工具函数
  10. Eclipse 重装Android ADT 问题~解决方案-