android权限代码分析(三)

4 :apk四个权限配置

使用eclipse创建两个demo,为test1和test2。我们使用test2来进行调用test1,来进行验证这几个权限的限制问题。

4.1第一种情况,不配置,默认可以随意调用。

Test1的AndroidManifest.xml文件:

Test1的MainActivity:

tese1的代码基本就是生成的原样,我们不需要修改。

Test2的AndroidManifest.xml文件:


此种情况是和Test1的配置一致,只是包名不同而已。

Test2的MainActivity文件的内容:这里只显示关键部分:



这个是默认的方式,点击button是可以直接启动起来的。

4.2第二种方式,增加权限访问normal:

修改test1的AndroidManifest.xml文档: 增加自定义权限,并给mainactivity配置权限,具体如下:


这时我们使用test2去启动test1时,便会出错,出现的错误信息为:

java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.example.test1/.MainActivity } from ProcessRecord{416e1478 5367:com.example.test2/10063} (pid=5367, uid=10063) requires com.lxm.test

这里可以看到,启动此activity需要权限com.lxm.test,这个权限便是我们配置的启动权限。我们对test2的AndroidManifest.xml进行修改,增加



增加此权限,则再次启动,则正常启动,未出现异常。这种方式的权限是最普通的权限,只要我们主动的在AndroidManifest.xml 配置,便可以获得到。

我们可以去android\frameworks\base\core\res里面的AndroidManifest.xml,这个里面可以看到更多的系统权限配置表。我们这里随便拿出两个是normal等级的权限:


可以看到,应用在AndroidManifest.xml配置这两个权限,则可以顺利的得到读取网络和wifi的状态信息。这个权限normal只是一个提醒作用,因为我们直接配置就可以无阻碍的使用,其目的只是提示用户使用了此权限而已。

4.3第三种方式,增加权限访问dangerous

Test1 AndroidManifest.xml配置为:



这个跟normal的区别仅仅为显示的方式,这个会已警告的方式提供给客户,使客户可以直观的看到此权限具有一定的危险性,其余的跟normal一致,test2直接申请此权限,也是可以顺利启动test1.

系统里面的dangerous的权限有:



4.4第四种方式,增加权限访问signatures

此权限则比较高级了。

Test1 AndroidManifest.xml配置为:




然后我们手动给test2签名,使用保存的文档去生成一个key,使用此key给test2进行签名,然后启动test2,发现启动不起来test1,提示错误:

java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.example.test1/.MainActivity } from ProcessRecord{41289530 6524:com.example.test2/10063} (pid=6524, uid=10063) requires com.lxm.test

报的错跟未申请权限现象一致,然而此处的原因便是签名不同导致。如果出现此问题,除非你有test1的签名key,否则是无法直接进行启动test1的MainActivity的,这时便可以完全的屏蔽掉其他应用恶意的调用,做出屏蔽。一般第三方软件的key,只有自己本公司内部持有,因此别人是无法拿到此key,这种保护算是最高级别的,此种情况只能通过合作进行使用和test1的签名一致,才能正常访问。


4.5第五种方式,增加权限访问signaturesOrSystem

此权限算是一个折中权限:

Test1配置为:




这个便是签名或者属于系统应用便可以访问。我们使用如下命令,使得应用放置到system/app里面:



然后再去启动应用,发现已经ok了。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员入门进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值