Android 应用在安装时不请求权限
Android App not asking for permissions when installing
我在我大学的 IT 部门工作,我们正在开发一个应用程序,该应用程序为 eduroam WiFi 安装了正确的设置(也许您听说过)。
但是我在使用 Android 6.0 的 LG G4 上 运行 遇到问题。安装编译后的 *.apk 时,它不要求任何权限,尽管它们是在 AndroidManifest.xml 中设置的。它适用于所有以前的 Android 版本。
现在是否必须在 运行 时请求权限?
如果您的目标 SDK 版本是 23,那么您需要在 运行 时请求 "dangerous" 权限。
如果是这种情况,那么如果您转到 Settings > Apps > "Your app" > Permissions
.
,您应该能够看到未授予任何权限
如果您还不想实施新系统,那么您可以将目标 sdk 版本降低到 22 以获取旧权限系统。不过,您仍然可以使用 sdk 版本 23 进行编译。
有关详细信息,请参阅 the documentation。
如果你想在运行时请求权限,你应该在你的应用程序中写一个特殊的请求。像这样:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
createPermissions();
}
public void createPermissions(){
String permission = Manifest.permission.READ_SMS;
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED){
if(!ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), permission)){
requestPermissions(new String[]{permission}),
SMS_PERMISSION);
}
}
}
如果用户是 运行 Android 6.0(API 级别 23)或更高版本,用户必须在 运行 时向您的应用授予权限应用程序。如果您同时向用户提出大量权限请求,您可能会压倒用户并导致他们退出您的应用程序。相反,您应该在需要时请求权限。
在某些情况下,一项或多项权限对于您的应用可能是绝对必要的。在应用程序启动后立即请求所有这些权限可能是有意义的。例如,如果您制作一个摄影应用程序,该应用程序将需要访问设备相机。当用户第一次启动应用程序时,他们不会惊讶地被要求获得使用相机的权限。但是,如果同一个应用程序还具有与用户的联系人共享照片的功能,您可能不应该在首次启动时请求 READ_CONTACTS 权限。相反,等到用户尝试使用 "sharing" 功能,然后请求许可。
如果您的应用提供了教程,那么在教程序列结束时请求应用的基本权限可能是有意义的。
Source/ref https://developer.android.com/training/permissions/usage-notes
我在我大学的 IT 部门工作,我们正在开发一个应用程序,该应用程序为 eduroam WiFi 安装了正确的设置(也许您听说过)。
但是我在使用 Android 6.0 的 LG G4 上 运行 遇到问题。安装编译后的 *.apk 时,它不要求任何权限,尽管它们是在 AndroidManifest.xml 中设置的。它适用于所有以前的 Android 版本。
现在是否必须在 运行 时请求权限?
如果您的目标 SDK 版本是 23,那么您需要在 运行 时请求 "dangerous" 权限。
如果是这种情况,那么如果您转到 Settings > Apps > "Your app" > Permissions
.
如果您还不想实施新系统,那么您可以将目标 sdk 版本降低到 22 以获取旧权限系统。不过,您仍然可以使用 sdk 版本 23 进行编译。
有关详细信息,请参阅 the documentation。
如果你想在运行时请求权限,你应该在你的应用程序中写一个特殊的请求。像这样:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
createPermissions();
}
public void createPermissions(){
String permission = Manifest.permission.READ_SMS;
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED){
if(!ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), permission)){
requestPermissions(new String[]{permission}),
SMS_PERMISSION);
}
}
}
如果用户是 运行 Android 6.0(API 级别 23)或更高版本,用户必须在 运行 时向您的应用授予权限应用程序。如果您同时向用户提出大量权限请求,您可能会压倒用户并导致他们退出您的应用程序。相反,您应该在需要时请求权限。
在某些情况下,一项或多项权限对于您的应用可能是绝对必要的。在应用程序启动后立即请求所有这些权限可能是有意义的。例如,如果您制作一个摄影应用程序,该应用程序将需要访问设备相机。当用户第一次启动应用程序时,他们不会惊讶地被要求获得使用相机的权限。但是,如果同一个应用程序还具有与用户的联系人共享照片的功能,您可能不应该在首次启动时请求 READ_CONTACTS 权限。相反,等到用户尝试使用 "sharing" 功能,然后请求许可。
如果您的应用提供了教程,那么在教程序列结束时请求应用的基本权限可能是有意义的。
Source/ref https://developer.android.com/training/permissions/usage-notes