Android:广播优先级、sendOrderedBroadcast、短信电话广播、abortBroadcast、ResultData

简介:

使用发送有序广播方法,广播优先级才能生效。

1
2
3
4
5
6
7
8
9
10
11
12
findViewById(R.id.button1).setOnClickListener( new  OnClickListener()
{
                          
     @Override
     public  void  onClick(View v)
     {
         Intent intent =  new  Intent();
         intent.setAction( "com.example.aex56" );
         intent.putExtra( "key" "value" );
         sendOrderedBroadcast(intent,  null ); //发送有序广播
     }
});


XML文件设置广播优先级:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<receiver
     android:name= "com.example.aex56_ordered_broadcast.MyReceiver1"
     android:enabled= "true"
     android:exported= "true"  >
     <intent-filter android:priority= "2500" >
         <action android:name= "com.example.aex56"  />
     </intent-filter>
</receiver>
<receiver
     android:name= "com.example.aex56_ordered_broadcast.MyReceiver2"
     android:enabled= "true"
     android:exported= "true"  >
     <intent-filter android:priority= "3000" >
         <action android:name= "com.example.aex56"  />
     </intent-filter>
</receiver>




接收电话呼出广播,自动添加号码前缀呼出;设置短信接收者最高优先级,拦截短信。

XML权限及优先级设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version= "1.0"  encoding= "utf-8" ?>
<manifest xmlns:android= "http://schemas.android.com/apk/res/android"
     package = "com.example.aex58_ordered_tel"
     android:versionCode= "1"
     android:versionName= "1.0"  >
     <uses-sdk
         android:minSdkVersion= "8"
         android:targetSdkVersion= "16"  />
     <uses-permission android:name= "android.permission.PROCESS_OUTGOING_CALLS"  />
     <uses-permission android:name= "android.permission.RECEIVE_SMS" />
     <application
         android:allowBackup= "true"
         android:icon= "@drawable/ic_launcher"
         android:label= "@string/app_name"
         android:theme= "@style/AppTheme"  >
         <receiver
             android:name= "com.example.aex58_ordered_tel.MyTelReceiver"
             android:enabled= "true"
             android:exported= "true"  >
             <intent-filter>
                 <action android:name= "android.intent.action.NEW_OUTGOING_CALL"  />
             </intent-filter>
         </receiver>
         <receiver
             android:name= "com.example.aex58_ordered_tel.MySmsReceiver"
             android:enabled= "true"
             android:exported= "true"  >
             <intent-filter android:priority= "9999999999999999999999999999999" >
                 <action android:name= "android.provider.Telephony.SMS_RECEIVED" />
             </intent-filter>
         </receiver>
     </application>
</manifest>



电话呼出广播接收:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public  class  MyTelReceiver  extends  BroadcastReceiver
{
     //监测电话号码
     /*1.添加电话呼出权限
      * uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"
      *
      *2.接收系统电话呼出的广播
      * <intent-filter >
      * <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
      * </intent-filter>
      *
      * 其他系统广播:
      * android.intent.action.BOOT_COMPLETED  开机启动广播
      */
           
     @Override
     public  void  onReceive(Context context, Intent intent)
     {
         String telnum = getResultData(); //得到电话号码
         telnum =  "0592"  + telnum;
         setResultData(telnum); //设置拨出的电话号码
     }
}


短信接收者:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public  class  MySmsReceiver  extends  BroadcastReceiver
{
       
     /*
      * 拦截短信
      * 1.添加短信接收权限
      * uses-permission android:name="android.permission.RECEIVE_SMS"
      *
      * 2.设置广播优先级,接收系统收短信的广播
      * <intent-filter android:priority="99999999999999999999999999"> 设置广播优先级
      *     <action android:name="android.provider.Telephony.SMS_RECEIVED"/>接收系统收到短信时的广播
      * </intent-filter>
      *
      * 3.重写onReceive
      * abortBroadcast();
      */
       
       
     @Override
     public  void  onReceive(Context context, Intent intent)
     {
         Log.e( "msg" "mmm" );
         abortBroadcast(); //关闭广播
     }
}




本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1211541,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
Android开发
Android 弹窗优先级管理,赶紧拿去用吧
Android 弹窗优先级管理,赶紧拿去用吧
|
11月前
|
存储 API Android开发
Android接收短信-createFromPdu
Android接收短信-createFromPdu
105 0
|
Java Android开发
Android7.1 应用组件添加intent-filter priority(优先级)不生效
Android7.1 应用组件添加intent-filter priority(优先级)不生效
204 0
|
Java Android开发
Android5.1更改网络优先级
Android5.1更改网络优先级
122 0
|
存储 消息中间件 Android开发
Android源码分析--广播的注册、发送和接收
Android源码分析--广播的注册、发送和接收
245 0
Android源码分析--广播的注册、发送和接收
|
Android开发
Android Service全屏广播
场景 产品需要一个全屏广播,不管用户在那个界面每隔一段时间都会弹出一个滚动的文字,而且这个不是用推送来做的,后台返回一组数据,然后客户端自己进行处理!如果有更好的方法或者建议都可以跟我说一下,万分感谢,第一次做这个也不知道用什么合适!
171 0
|
消息中间件 存储 Android开发
Android 四大组件之一:BroadCastReceiver动态注册广播流程
Android 四大组件之一:BroadCastReceiver动态注册广播流程
242 0
Android 四大组件之一:BroadCastReceiver动态注册广播流程
|
设计模式 Android开发
Android移动应用基础教程【广播机制】
Android移动应用基础教程【广播机制】
203 0
Android移动应用基础教程【广播机制】
|
物联网 Android开发
Android 解析蓝牙广播数据
Android 解析蓝牙广播数据
1062 1
Android 解析蓝牙广播数据
|
API Android开发 UED
【Android 进程保活】应用进程拉活 ( 应用进程拉活简介 | 广播拉活 | 显示广播与隐式广播 | 全家桶拉活 )
【Android 进程保活】应用进程拉活 ( 应用进程拉活简介 | 广播拉活 | 显示广播与隐式广播 | 全家桶拉活 )
376 0