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,如需转载请自行联系原作者
目录
相关文章
|
存储 消息中间件 Android开发
Android源码分析--广播的注册、发送和接收
Android源码分析--广播的注册、发送和接收
209 0
Android源码分析--广播的注册、发送和接收
|
Android开发
Android Service全屏广播
场景 产品需要一个全屏广播,不管用户在那个界面每隔一段时间都会弹出一个滚动的文字,而且这个不是用推送来做的,后台返回一组数据,然后客户端自己进行处理!如果有更好的方法或者建议都可以跟我说一下,万分感谢,第一次做这个也不知道用什么合适!
143 0
|
消息中间件 存储 Android开发
Android 四大组件之一:BroadCastReceiver动态注册广播流程
Android 四大组件之一:BroadCastReceiver动态注册广播流程
205 0
Android 四大组件之一:BroadCastReceiver动态注册广播流程
|
设计模式 Android开发
Android移动应用基础教程【广播机制】
Android移动应用基础教程【广播机制】
177 0
Android移动应用基础教程【广播机制】
|
物联网 Android开发
Android 解析蓝牙广播数据
Android 解析蓝牙广播数据
1016 1
Android 解析蓝牙广播数据
|
API Android开发 UED
【Android 进程保活】应用进程拉活 ( 应用进程拉活简介 | 广播拉活 | 显示广播与隐式广播 | 全家桶拉活 )
【Android 进程保活】应用进程拉活 ( 应用进程拉活简介 | 广播拉活 | 显示广播与隐式广播 | 全家桶拉活 )
348 0
|
Java Android开发 开发者
【Android 电量优化】JobScheduler 源码分析 ( JobServiceContext 源码分析 | 闭环操作总结 | 用户提交任务 | 广播接收者接受相关广播触发任务执行 )★
【Android 电量优化】JobScheduler 源码分析 ( JobServiceContext 源码分析 | 闭环操作总结 | 用户提交任务 | 广播接收者接受相关广播触发任务执行 )★
139 0
|
缓存 Android开发
【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )
【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )
318 0
|
Android开发
我要做 Android 之 广播
广播的分类: 普通广播 有序广播 本地广播 粘性广播 一:普通广播 普通广播是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条消息,他们接收的先后是随机的。
1229 0
|
Android开发 安全
Android应用内广播LocalBroadcastManager机制详解
终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 1. 简介 通常我们在使用Android广播的时候都会直接将广播注册到系统的AMS当中,由于AMS任务繁忙,一般可能不会立即能处理到我们发出的广播,如果我们使用广播是在应用内的单个进程中使用,则完全可以采用LocalBroadcastManager来处理。
1207 0
相关产品
云迁移中心
推荐文章
更多