繁体   English   中英

Android 应用程序在安装时不要求权限

[英]Android App not asking for permissions when installing

我在我大学的 IT 部门工作,我们开发了一个应用程序,可以为 eduroam WiFi 安装正确的设置(也许您听说过)。

但是,我在我自己的 LG G4 上使用 Android 6.0 运行它时遇到问题。 安装编译后的 *.apk 时,它不会要求任何权限,尽管它们是在 AndroidManifest.xml 中设置的。 它适用于所有以前的 Android 版本。

现在是否必须在运行时请求权限?

如果您的目标 SDK 版本是 23,那么您需要在运行时请求“危险”权限。

如果是这种情况,那么如果您转到Settings > Apps > "Your app" > Permissions您应该能够看到未授予任何Settings > Apps > "Your app" > Permissions

如果您还不想实施新系统,那么您可以将目标 sdk 版本降低到 22 以获得旧的权限系统。 不过,您仍然可以使用 sdk 版本 23 进行编译。

有关更多信息,请参阅文档

如果你想在运行时请求权限,你应该在你的应用程序中写一个特殊的请求。 像这样的东西:

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 权限。 相反,等到用户尝试使用“共享”功能,然后请求许可。

如果您的应用程序提供了教程,则在教程序列的末尾请求应用程序的基本权限可能是有意义的。

来源/参考https://developer.android.com/training/permissions/usage-notes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM