Android 23不生成用户权限元素的清单文件

时间:2016-02-29 22:57:44

标签: android android-6.0-marshmallow

我有几个相互依赖的模块的项目,我们刚刚升级到目标android-23。

问题是,当我在AndroidManifest中使用Manifest.permission.ACCESS_FINE_LOCATION时,该应用似乎不会生成<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>等属性。

然而,当我<permission android:name="android.permission.ACCESS_FINE_LOCATION"/>时,它确实生成了属性,但这与我见过的任何和所有示例似乎都不同。

供参考,我们的版本是:

minSdkVersion = 18
compileSdkVersion = 23
targetSdkVersion  = 23
buildToolsVersion = "23.0.2"

和支持库是23.0.1

任何人遇到这个或有任何想法发生了什么?

更新 添加我在build/generated/source/r/{flavor}/com/example/Manifest.java

中看到的生成的文件内容
public final class Manifest {
    public static final class permission {
        public static final String C2D_MESSAGE="com.example.permission.C2D_MESSAGE";
        public static final String RECEIVE_ADM_MESSAGE="com.example.permission.RECEIVE_ADM_MESSAGE";
        public static final String UA_DATA="com.example.permission.UA_DATA";
    }
}

3 个答案:

答案 0 :(得分:5)

这是预期的。

当您在清单中添加<permission>时,您定义您自己的权限。因此,这会添加到课程<your_package_name>.Manifest中。

但是,当您在清单中添加<uses-permission>时,您定义新权限,但指定您请求已获得权限由其他地方定义(大部分不在您的应用程序中)。因此,在这种情况下,权限不会添加到类<your_package_name>.Manifest。相反,它可以在<package_defining_the_permission>.Manifest课程中找到。对于ACCESS_FINE_LOCATION权限,它在名为android的包中定义:http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/res/AndroidManifest.xml#540

答案 1 :(得分:0)

试试这个。 使用

compileSdkVersion = 23
targetSdkVersion  = 23

你需要在android中的运行时询问权限。 请参阅此处以了解在运行时询问权限: - http://coderzpassion.com/android-new-runtime-permissions/

答案 2 :(得分:0)

可能会更加明确地提到Jiyong Park提到的内容。

您要使用的Manifest

android.Manifest.permission

com.myapp.Manifest
你可能正在看的

(如果你刚开始输入Manifest,这很可能是因为它在你的应用程序包中)。