Android 23 未为使用权限元素生成清单文件
Android 23 Not Generating Manifest file for uses-permission elements
我有几个相互依赖的模块的项目,我们刚刚升级到目标 android-23。
问题是,当我在 AndroidManifest 中使用 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
时,应用程序似乎没有生成 Manifest.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";
}
}
试试这个。
与
一起工作
compileSdkVersion = 23
targetSdkVersion = 23
您需要在 android 中在运行时请求权限。
请参阅此处以在运行时请求权限:- http://coderzpassion.com/android-new-runtime-permissions/
这是预期的。
当您在清单中添加 <permission>
时,您就是在定义 自己的权限。因此,这被添加到 class <your_package_name>.Manifest
。
但是,当您在清单中添加 <uses-permission>
时,您 不是 定义新权限,而是指定您 请求 已在其他地方定义的权限(大多数不在您的应用程序中)。因此,在这种情况下,权限不会添加到 class <your_package_name>.Manifest
。相反,它可以在 <package_defining_the_permission>.Manifest
class 中找到。对于ACCESS_FINE_LOCATION
权限,定义在名为android
的包中:http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/res/AndroidManifest.xml#540
为了让 Jiyong Park 提到的内容更加清晰。
您要使用的 Manifest
是
android.Manifest.permission
和不是
com.myapp.Manifest
您可能正在查看(如果您刚开始输入 Manifest
,这很可能就是您得到的,因为它在您的应用程序包中)。
我有几个相互依赖的模块的项目,我们刚刚升级到目标 android-23。
问题是,当我在 AndroidManifest 中使用 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
时,应用程序似乎没有生成 Manifest.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";
}
}
试试这个。 与
一起工作compileSdkVersion = 23
targetSdkVersion = 23
您需要在 android 中在运行时请求权限。 请参阅此处以在运行时请求权限:- http://coderzpassion.com/android-new-runtime-permissions/
这是预期的。
当您在清单中添加 <permission>
时,您就是在定义 自己的权限。因此,这被添加到 class <your_package_name>.Manifest
。
但是,当您在清单中添加 <uses-permission>
时,您 不是 定义新权限,而是指定您 请求 已在其他地方定义的权限(大多数不在您的应用程序中)。因此,在这种情况下,权限不会添加到 class <your_package_name>.Manifest
。相反,它可以在 <package_defining_the_permission>.Manifest
class 中找到。对于ACCESS_FINE_LOCATION
权限,定义在名为android
的包中:http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/res/AndroidManifest.xml#540
为了让 Jiyong Park 提到的内容更加清晰。
您要使用的 Manifest
是
android.Manifest.permission
和不是
com.myapp.Manifest
您可能正在查看(如果您刚开始输入 Manifest
,这很可能就是您得到的,因为它在您的应用程序包中)。