Android AndroidManifest的属性总结:android:exported

工作中碰到了一个AIDL服务失败的BUG,这里记录一下。

AIDL接口的Service的AndroidManifest中android:exported="false",导致该服务不能够跨进程启动。需要改为:android:exported="true"

最后参考其他大神文章对android:exported做了一个简单地总结:

android:exported:这个属性用来标识当前组件能否被其他应用程序组件调用或跟它交互。其值尾true时则表示可以被调用或交互,为false时只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。Activity,Service,Content Provider,Broadcast Receiver四大组件均具有android:exported属性。

1、activity

  • true:当前Activity可以被另一个Application的组件启动
  • false:当前Activity不可以被另一个Application的组件启动
  • **无intent filter **:默认false
  • 至少一个intent filter :默认true
  • 也可以使用permission来限制外部实体唤醒当前Activity

2、service

  • true:其它应用的组件是否可以唤醒service或者和这个service进行交互
  • false:只有同一个应用的组件或者有着同样user ID的应用可以启动这个service或者绑定这个service
  • 无intent filter :默认false
  • 至少一个intent filter :默认true
  • 也可以使用permission来限制外部实体唤醒当前service

3、Content Provider

  • true:任何应用可以使用Provider通过URI 来获得它,也可以通过相应的权限来使用Provider
  • false:当前提供者不能被其它应用使用。只有拥有同样的user ID 的应用可以获得当前应用的Provider
  • Android sdk版本大于16:默认false
  • **Android sdk版本小于等于16 **:默认true
  • 可以通过Android:exported=“fasle” 和 permission来限制当前应用Provider是否会被其它应用获取。

4、Broadcast Receiver

  • true:当前broadcast Receiver 可以从当前应用外部获取Receiver message
  • false:当前broadcast Receiver 只能收到同一个应用或者拥有同一 user ID 应用发出广播
  • **无intent filter **:默认false
  • 至少一个intent filter :默认true
  • 也可以使用permission来限制外部应用给他发送消息

参考链接:

https://www.jianshu.com/p/8a4e8f857db5

http://blog.csdn.net/watermusicyes/article/details/46460347

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值