安卓关于exported的问题

来源:互联网 发布:React双向数据绑定原理 编辑:程序博客网 时间:2024/05/10 07:22

=== 安卓关于exported的问题 ===

 

在安卓清单文件中注册广播接受者、内容提供者或者服务的时候, 经常会遇到提示exported的问题. 这个问题其实是属于Lint/Waring的范畴, 和 allowBackup 的问题一样, 如果不是特别关心安全层面的话, 可以不用严格控制的. 下面说一下人为介入控制的方式. 当然, 你可以用ADT自带的Run Lint选择问题, 然后手动解决:

 

=================================================================

 

问题: Exported receiver does not require permission

[1]

加入Schema于 父级节点(其实哪一个父级都可以) xmlns:tools="http://schemas.android.com/tools"

然后在节点上使用tools:ignore="ExportedService"

 

[2]

如果你想严格控制你的程序使用范围, 那么就必须控制exported = "false", 表示 不允许外部应用进行交互

直接在节点上使用android:exported="false"

 

=================================================================

 

问题: Exported service does not require permission

[1] 感觉 治标不治本, 感觉只是 加权限抑制了一下

加入权限 <permissionandroid:protectionLevel="normal"android:name="oem.permission.SENDMAIL" />

然后在节点上使用android:permission="oem.permission.SENDMAIL"

 

[2]

加入Schema于 父级节点(其实哪一个父级都可以) xmlns:tools="http://schemas.android.com/tools"

然后在节点上使用tools:ignore="ExportedReceiver"

 

[3]

如果你想严格控制你的程序使用范围, 那么就必须控制exported = "false", 表示 不允许外部应用进行交互

直接在节点上使用android:exported="false"

 

=================================================================

 

内容提供者原理类似, 只要使用tools:ignore="ExportedContentProvider" 即可. 其实Activity 也可以这么控制的, 只不过感觉很少会碰到, 如果暴露了 intent/action 之类的. 我就不再写了, 根据上面两个的规律, 也可以模仿地写出来, 很简单的, 重要的是理解为什么要这么做…

 

=================================================================

 

 

 

 

Presented by imknown

2015-03-26

 

0 0
原创粉丝点击