android4.4.2 短信广播变更
近期三星陆续放出android4.4.2ROM更新包,android4.4.2对短信虽说是放开了权限,但其实是加强了限制,一台手机智能通过一个设置为默认应用的短信应用软件才能发送短信,否则就无法对短信数据库进行操作。
以为只是对这个进行了变更, 认真观察android4.4.2 mms源码完,发现对短信的广播也进行了一些变更,有些厂家为了兼容会继续发送android.provider.Telephony.SMS_RECEIVED广播,但是有些厂家就不厚道了,在android4.4上就发送android.provider.Telephony.SMS_DELIVER广播,因为他只对自带的短信应用负责。
所以短信应用如果需要兼容android4.4.2及以下版本,则需要接收这两个广播,这样一来就可以保证都能收的到;但是总是开心的太早,换了一部android4.4.2的手机,发现开始接收到重复的短信,原来这些所谓厚道的厂家,两个广播都发;这下好了,改怎么处理呢?
这边有一个最土的方式,就是拦截,获取短信时间,判断时间是否与上一条短信时间相同,如果相同不做处理,基本上是同事触发。这个方法虽然最快,但是并不觉的靠谱,继续实现的话,还得继续分析android4.4.2的源码。
以下提供判断android4.4.2默认短信应用代码:
/**
* 默认短信检测
* @param context 应用对象
* @param myPackageName 应用包名
* @return
*/
public static boolean isDefaultSms(Context context,String myPackageName){
boolean isDefault=false;
try {
int currentapiVersion=android.os.Build.VERSION.SDK_INT;
if(currentapiVersion>=android.os.Build.VERSION_CODES.KITKAT){
String defaultSmsApplication = Telephony.Sms.getDefaultSmsPackage(context);
if (defaultSmsApplication != null && defaultSmsApplication.equals(myPackageName)) {
isDefault=true;
}
}
} catch (Exception e) {
// TODO: handle exception
}
return isDefault;
} /**
* 前往设置默认短信应用
* @param context 应用对象
* @param myPackageName 应用包名
*/
public static void startSetDefault(Context context,String myPackageName){
String ACTION_CHANGE_DEFAULT = "android.provider.Telephony.ACTION_CHANGE_DEFAULT";
String EXTRA_PACKAGE_NAME = "package";
int currentapiVersion=android.os.Build.VERSION.SDK_INT;
if(currentapiVersion>=android.os.Build.VERSION_CODES.KITKAT){
if(!isDefaultSms(context,myPackageName)){
Intent intent = new Intent(ACTION_CHANGE_DEFAULT);
intent.putExtra(EXTRA_PACKAGE_NAME, context.getPackageName());
context.startActivity(intent);
}
}
}
android4.4.2 短信广播变更的更多相关文章
- Android短信监听实现,及Android4.4之后短信机制变更
前阵子公司有一个项目,简单的监听短信应用,功能只有如下两个: 1.监听短信并获取短信内容上传服务器: 2.从服务器获取短信内容,发送出去 按照传统的思路,监听短信我们有两种方式:第一种是使用广播 ...
- Android 短信广播接收相关问题
本人是Android新手,最近做了一个关于监听手机短信功能的应用,我在网上看资料了解到广播分为有序广播和无序广播,有序广播:无序广播又称普通广播,其中的利弊我也一时没搞清楚,我用的是有序广播实现的,具 ...
- BroadcastReceiver 接收系统短信广播
BroadcastReceiver 接收系统短信广播 /* 注册广播: * |--静态注册 (在AndroidManifest .xml 中注册) * <receiver androi ...
- Android4.4 RIL短信接收流程分析
最近有客户反馈Android接收不到短信,于是一头扎进RIL里面找原因.最后发现不是RIL的问题,而是BC72上报短信的格式不对,AT+CNMA=1无作用等几个小问题导致的.尽管问题不在RIL,但总算 ...
- Android4.4 往短信收件箱中插入自定义短信(伪造短信)
这段时间稍微有点空闲,把前一段学习Android做过的一些小项目整理整理.虽然没有什么工程量很大的项目,但是对于一个新手,解决这些问题还是花了一段时间.感觉还是非常有记录的意义呢~~~么么哒*—* 今 ...
- android4.4短信新概念
android4.4对短信引入了一个全新的概念:默认短信应用.即android用户可以在系统设置里面选择一个默认的短信应用,只有这个应用才能进行手机的基本短信操作.按照google自己的解释这样做的原 ...
- android 使用广播 接收和拦截 android系统短信
package com.app.sms_broadcastreceiver; import android.app.Activity; import android.content.Broadcast ...
- 让你的短信应用迎接Android 4.4(KitKat)
原文地址:Getting Your SMS Apps Ready for KitKat 发送和接收短信是手机最基本的功能,很多的开发者也开发了很多成功的应用来增强Android这一方面的体验.你们当中 ...
- Android开发——短信电话拦截/接听电话
1.短信拦截 首先需要声明的是,Android4.4版本以上,如果想做到短信拦截,必须成为default sms,把所有短信相关的功能都包揽了,然后再做短信拦截.但这种做法,适配性和兼容性的工作是非常 ...
随机推荐
- 用正则表达式在注册页面(js/aspx.cs)的验证
1.验证邮箱(用户名) JS页面中: 首先定义变量和正则 var usermail = $("#usermail" ).val(); var username= /^([a-zA- ...
- Intellij IDEA开发第一个Android应用
1.创建一个项目 File——>New Project——>.......——>Finish 2.创建模块 3.MyActivity.java package com.example ...
- redhat 挂载 iso文件 提示 mount :not a directory
- SQL Server文本和图像函数
文本和图像函数 1.查找特定字符串PATINDEX 语法与字符串的patindex一样. 2.获取文本指针TEXTPTR SQLServer在存储文本类型(ntext.text)和图像数据类型(ima ...
- 第三百三十二天 how can I 坚持
今天一大早,住的这就施工了,被吵醒了.. 下午去了趟小米之家,小米5还行,黑科技不黑,哈哈. 小米5黑科技不太黑,就知道造词,整体感觉还行,就是感觉屏幕有点长,小米之家人倒是不少,还有老太太去小米之家 ...
- 第二百二十天 how can I 坚持
今天如愿去了凤凰岭,比想象中的好多了.山好陡,都没有爬到山顶,下山时山都有点黑了,有点恐怖. 凤凰岭啊.有时间还得再去趟. 下周去八大处.坚持. 看什么时候能把北京这些山爬完,然后 三山五岳. 不爽. ...
- Cocos手游录制插件:cocos-plugin
Cocos手游录制插件:cocos-plugin Testinlab2014-10-29 13:42:27153 次阅读 Cocos手游录制插件,用于添加Testin手游自动化测试支持,支持cocos ...
- 【多线程同步案例】Race Condition引起的性能问题
Race Condition(也叫做资源竞争),是多线程编程中比较头疼的问题.特别是Java多线程模型当中,经常会因为多个线程同时访问相同的共享数据,而造成数据的不一致性.为了解决这个问题,通常来说需 ...
- 【转】使用json-lib进行Java和JSON之间的转换
原文链接:http://www.cnblogs.com/mailingfeng/archive/2012/01/18/2325707.html 1. json-lib是一个java类库,提供将Java ...
- HDU 4617 Weapon (简单三维计算几何,异面直线距离)
Weapon Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Subm ...