我有几个相互依赖的模块的项目,我们刚刚升级到目标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";
}
}
答案 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
,这很可能是因为它在你的应用程序包中)。