Android 6.0 Manifest.xml中的<uses-permission> vs <permission>

时间:2015-12-15 21:41:57

标签: java android permissions

我知道我必须使用Android 6的新权限模型。(在运行时在活动或片段中检查和请求权限

我的问题是生成的Manifest.java文件。当我使用<uses-permission>时,它适用于Android&lt; 6.0自动但不在Manifest.java文件和类中创建这些条目。为此,我必须使用Manifest xml文件中的<permission>标记。

这是正常的方式吗?我是通过使用额外的<permission>代码吗?

来做到的

因为如果我必须在Manifest xml文件中使用这两个标签,我就会产生这样的冗余

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

更新1

好的,似乎只要在我的Manifest.xml中添加一个Manifest.java标记就会生成<permission>,我正在做的是由于Mixpanels Cloud Messaging插件看起来像那样

<permission
    android:name=           "${applicationId}.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<permission android:name="com.google.android.c2dm.permission.RECEIVE" />

有没有办法手动包含位于/ sdk / platforms / android-XX文件夹中的原始Manifest.java?

2 个答案:

答案 0 :(得分:1)

权限

声明一个安全权限,该权限可用于限制对此应用程序或其他应用程序的特定组件或功能的访问。有关权限如何工作的更多信息,请参见简介中的Permissions部分和Security and Permissions文档。

使用权限

在某些情况下,您请求的权限可能会影响Google Play过滤应用程序的方式。

如果您请求与硬件相关的权限(例如CAMERA),则Google Play会假定您的应用程序需要基础硬件功能,并从不提供该功能的设备中过滤该应用程序。

要控制过滤,请务必在元素中明确声明硬件功能,而不要依靠Google Play来“发现”元素中的要求。然后,如果要禁用对特定功能的过滤,则可以在声明中添加android:required =“ false”属性。

有关隐含硬件功能的权限列表,请参见uses-feature元素的文档。

答案 1 :(得分:0)

嗯,我现在最好的解决方案就是如果我想访问Androids系统权限,请使用以下内容。

android.Manifest.permission.MODIFY_AUDIO_SETTINGS

这种类型是为了访问我的自定义权限

<insert.packagename.here>.Manifest.permission.C2D_MESSAGE

这样我可以避免在Manifest.xml中使用冗余权限声明