欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Android权限之发送彩信

最编程 2024-08-05 10:54:34
...

手机安装apk时,权限列表中有“发送彩信”,因为apk自己写的,代码中根本没有授予短信/彩信相关权限,于是浏览了下各种帖子,整理如下:

android 系统权限中,涉及到短信、彩信的:

	<uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />

    <uses-permission android:name="android.permission.RECEIVE_MMS"/>

可以看到,里面根本没有“发送彩信”的权限,那这权限从何而来?

有大佬总结,“发送彩信”出现在权限列表中,是因为授予了INTERNET权限:

<uses-permission android:name="android.permission.INTERNET" />

有这个权限的应用,就会在权限列表中出现"发送彩信"。我特意写的个Demo验证了一下,确实如此。

这是为什么呢?

搞Android开发的同学都知道android手机有个短信功能,但对于短信中包含SMS和MMS很少关注,平时也就搞ROM开发的同学会去研究一下。SMS和MMS根本不是一个东西,可以说这是中国特色。因为彩信是走流量的,你到服务商那里要交钱的,而且还很贵。放在2010年前,肯发彩信的都是土豪,那是的流量可谓是真金白银。现在好了,流量基本白菜价,所以彩信这个功能基本是鸡肋,被各种社交软件替代。

彩信平时引起关注的情景,大多数是安装apk的时候,权限列表中出现这个“发送彩信”。大家害怕应用自己在后台干坏事,怕是手机病毒。

发送彩信需要什么权限呢?

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

只需要两个:
@联网权限(必须,但是走的是GPRS网络,也就是说发彩信需要手机(卡)支持GPRS且是消耗流量的)@存储器访问权限(因为带附件的短信才叫彩信)
而且App可以做到对用户完全透明,悄无声息的发送彩信。

联网权限,不是敏感权限,部分手机会意思性的提示用户要该apk会使用网络,有的手机根本不提示。存储权限虽然是敏感权限,但是大多数软件都有这2个权限,大家都习以为常,不会特别关注。因此恶意App能轻易做到不经过用户同意发彩信,即便是运行在M及之后的版本。原生Android没有发送彩信这一权限,而中国的用户又确实饱受恶意发送彩信的困扰,因此ROM厂商如小米就自己做了个MMS权限,默认不授予App(询问),以限制有可能发出彩信的App。

参考链接:链接:https://www.zhihu.com/question/27092494/answer/262819089

推荐阅读