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