导航:首页 > 编程大全 > 测试iconandroid在线工具

测试iconandroid在线工具

发布时间:2025-02-19 18:56:57

『壹』 如何在Android 4.4上实现短信拦截

Android在4.4上增加了不少安全措施,除了把SELinux设置为enforce外,在短信方向也加强了限制。
4.4之后,新增了一个default sms的机制,详细的描述,可以参考我的另一篇文章《谈谈4.4中的新增功能对安全类软件的影响》。简而言之,就是如果要在4.4之后实现短信拦截功能,就必须成为default sms,把所有短信相关的功能都包揽了,然后再做短信拦截。但这种做法,适配性和兼容性的工作是非常巨大的,短信、wapush(多种)、彩信、单双卡等等,相当于要求短信拦截类的软件要集成一个功能非常完善的通讯录类应用的功能。
那么,是否有一种方法,可以在不成为default sms的同时也可以对短信进行“写操作”(这可是让4.4一下子回到解放前啊。。。。)? 答案是有的。
XDA大牛有人发现了一种比较讨巧的方法,原文可以参考这里。
原理很简单,主要是利用4.2+后的添加的App Ops权限管理功能,在MESSAGE的TAB中找到自己的App,并进入相应的权限管理界面,如下图所示,FinalDemo是我自己测试的一个DEMO:

留意到Write SMS/MMS的开头,默认是OFF的,但我们可以把它打开。
打开之后,我们就可以通过监控短信数据库变化的方法实现短信拦截了,我也写了个简单的测试代码,测试成功,把代码和相关的配置也放了来吧

打开App Ops的代码

[java] view plain
<span style="white-space:pre"> </span>Intent intent = new Intent(Intent.ACTION_MAIN);
ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.Settings");
intent.setComponent(cn);
intent.putExtra(":android:show_fragment", "com.android.settings.applications.AppOpsSummary");
startActivity(intent);

AndroidManifest.xml的配置

[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.finaldemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<!-- <uses-permission android:name="android.permission.SEND_SMS"/> -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

<activity
android:name="com.example.finaldemo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".SmsReceiver"
android:permission="android.permission.BROADCAST_SMS" >

<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>

</receiver>

<service android:name="com.example.finaldemo.SmsService" />

</application>
</manifest>

短信拦截的代码

[java] view plain
mObserver = new ContentObserver(new Handler()) {

@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(Uri.parse("content://sms/inbox"), new String[] { "_id", "address", "body" }, null, null, "_id desc");
long id = -1;

if (cursor.getCount() > 0 && cursor.moveToFirst()) {
id = cursor.getLong(0);
String address = cursor.getString(1);
String body = cursor.getString(2);

Toast.makeText(SmsService.this, String.format("address: %s\n body: %s", address, body), Toast.LENGTH_SHORT).show();
}
cursor.close();

if (id != -1) {
int count = resolver.delete(Sms.CONTENT_URI, "_id=" + id, null);
Toast.makeText(SmsService.this, count == 1 ? "删除成功" : "删除失败", Toast.LENGTH_SHORT).show();
}
}

};

getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, mObserver);

个人结论
在4.4上我们可以在不成为default sms的前提下实现短信拦截,但由于App Ops从4.3出现到4.4一直牌隐藏的状态,猜想google还在不断调整中,4.4之后的子版本是否会保留,是完全不能保证的;
Write SMS/MMS的权限开关的存在跟defaultsms本身是一个矛盾,之所以出现Write SMS/MMS的权限开关,完全是因为App Ops出现在前,而defaultsms出现在后所致;

在4.4前,短信拦截都是通过动态注册高优先级BroadcastReceiver的方式进行拦截的,主要是用于跟竞品进行短信抢占。而现在ContenetObserver是并行通知的情况下,如果过滤逻辑不够快,依然有可能会被竞品抢先把短信先删除掉,导致拿到的最后一次短信是旧的短信。建议结合BroadcastReceiver和ContenetObserver进行拦截,BroadcastReceiver做内容校正和后备数据,以防拿到的最后一条短信是旧的时候,依然可以进行正常的拦截流程;

阅读全文

与测试iconandroid在线工具相关的资料

热点内容
ug编程t形槽怎么做 浏览:283
技术性文件的分类有哪些 浏览:98
iphone文件到电脑 浏览:647
证券pdf文件的电子录入 浏览:214
htmlform上传文件 浏览:715
电脑中毒了每个文件夹多出图片 浏览:228
苍南如何制作一个营销网站 浏览:933
刻录进光盘的文件缓存在哪里 浏览:94
开发影视网站怎么取得影视资源 浏览:565
平安wifi登录网络异常 浏览:638
u盘病毒清除文件会不会消失 浏览:126
数独游戏下载安卓 浏览:734
视频转文件夹怎么弄 浏览:200
电工模拟试题app下载 浏览:830
cad文件旧版本找回 浏览:572
java移动后端 浏览:240
苹果11怎么下载不了颂拓app 浏览:536
苹果app文件以什么结尾 浏览:173
手机qq怎么建文件 浏览:262
鸿蒙怎么编程 浏览:51

友情链接