Android:BroadcastReceiver:采用广播接收者拦截外拔电话、发送广播、其他常用广播、特性
来源:互联网 发布:手机淘宝链接在哪里 编辑:程序博客网 时间:2024/05/01 13:28
@Override
public void onReceive(Context context, Intent intent) {
String number = getResultData();
if("5556".equals(number)){
setResultData(null);//清除电话号码,不能拨打电话
}else{
number = "12593"+ number;
setResultData(number);//修改电话
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.itcast.smslistener"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".SMSBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
<receiver android:name=".PhoneBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
</manifest>
可以指定明确的接受者,这样终止这个命令就不好使了
EditText有一个属性:android:inputType设置只能输入什么东西,比如phone、email
除了短信到来广播Intent,Android还有很多广播Intent,如:开机启动、电池电量变化、时间已经改变等广播Intent。
<receiver android:name=".IncomingSMSReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED"/>
</intent-filter>
</receiver>
<receiver android:name=".IncomingSMSReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
并且要进行权限声明:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
在Android中,程序的响应(Responsive)被活动管理器(ActivityManager)和窗口管理器(Window Manager)这两个系统服务所监视。当BroadcastReceiver在10秒内没有执行完毕,Android会认为该程序无响应。所以在BroadcastReceiver里不能做一些比较耗时的操作,否侧会弹出ANR(Application No Response)的对话框。如果需要完成一项比较耗时的工作,应该通过发送Intent给Service,由Service来完成。而不是使用子线程的方法来解决,因为BroadcastReceiver的生命周期很短(在onReceive()执行后BroadcastReceiver的实例就会被销毁),子线程可能还没有结束它就先结束了。当然如果BroadcastReceiver结束了,它的宿主进程还在运行,子线程还会继续执行。但宿主进程此时很容易在系统需要内存时被优先杀死,因为它属于空进程(没有任何活动组件的进程)。
public class IncomingSMSReceiver extendsBroadcastReceiver {
@Override public void onReceive(Context context, Intentintent) {
//发送Intent启动服务,由服务来完成比较耗时的操作
Intent service =new Intent(context,XxxService.class);
context.startService(service);
}
}
每次广播消息到来时都会创建BroadcastReceiver实例并执行onReceive()方法。- Android:BroadcastReceiver:采用广播接收者拦截外拔电话、发送广播、其他常用广播、特性
- Android 采用广播接收者拦截外拨电话及其特性
- 采用广播接收者拦截外拨电话及其特性
- Android开发入门之采用广播接收者拦截外拨电话及其特性
- android学习笔记---38_采用广播接收者拦截外拔电话,实现原理以及实例源码
- 广播接收者拦截电话
- android 广播接收者--BroadcastReceiver
- android 广播接收者--BroadcastReceiver
- Android 广播接收者--BroadcastReceiver
- Android BroadcastReceiver 广播接收者
- Android 广播接收者--BroadcastReceiver
- android 广播接收者--BroadcastReceiver
- android:BroadcastReceiver 广播接收者
- android广播接收者broadcastReceiver
- android广播接收者BroadcastReceiver
- Android BroadcastReceiver 广播接收者
- Android系统常用广播接收者BroadcastReceiver
- android 之 Broadcast(广播) BroadcastReceiver(广播接收者)
- Android代码混淆的注意事项
- JasperReport各种问题解决方法
- [.Net码农]String.Split()函数
- NVMe 中断请求
- iOS界面设计切图小结
- Android:BroadcastReceiver:采用广播接收者拦截外拔电话、发送广播、其他常用广播、特性
- iOS开发之数组排序
- Android 面试题目总结(1)
- VS中调试DLL工程的正确方法
- <二> 摄像头画面显示
- form上传文件设置文件最大限制
- 字符串中删除指定字符
- AngularJS Filters
- 【深度学习】关于解决caffe中draw_net无法使用的问题