android
4.4之后非默认的短信应用已经没有办法删除短信了。像以前那样用如下方法是不会没法删除短信的(即使在xml中配置了短信的读写权限),同时也不会有报错或其他提示。
但通过打印可以看到上述代码的result是等于0的,即没有删除掉短信。
这个是因为在:/frameworks/base/services/java/com/android/server/AppOpsService.java中android系统添加了权限检查的函数
检查用户设定权限的函数是:checkOperation() 和 noteOperation(),区别是
checkOperation() 只是检查 Operation 的情况,noteOperation()
还会记录访问时间等信息.
然后在MmsServiceBroker服务中可以找到如下代码就是对应用删除短信的权限进行检查
不过幸运的是在AppOpsService.java中也提供了修改权限的接口:修改某个 App 的某项权限的函数是
setMode(),其中就是修改成员变量 mUidOps。mUidOps 是一个List
保存了某个package对应的所有权限