2017-06-12 53 views
0

我正在研究一个请求运行时权限的应用程序。我怎样才能使它在所有的Android版本上工作?哪些支持运行时权限,哪些不支持。Android中的运行时权限

回答

1

您可以创建一个父活动或可以处理的权限请求,然后创建检查权限,使所有的孩子可以使用它的方法的片段。该方法将检查权限并致电onPermissionGrantedonPermissionDenied

如果Android版本是小于m,只是立即调onPermissionGranted,否则检查权限正常:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { 
    callback.onPermissionGranted(); 
    return; 
} 

//check permissions at runtime... 

然后运行你的代码需要在任何API级别onPermissionGranted回调权限。

0

很简单。如果您的应用程序在Android米长跑,你要问的权限,否则,所有的权限被自动授予

阅读文档https://developer.android.com/guide/topics/permissions/requesting.html

+0

我正在使用Dexter应用程序权限库!当应用程序启动时,它会要求获得CALL权限。它可以在棉花糖和牛轧糖上正常工作,但是app版本会在较低版本上关闭。如果我删除了德克斯特权限的应用程序适用于较低的Android版本的罚款,但后来它不要求对棉花糖的权限高。 –

0

如果你在API级别23运行你的应用程序(在安装时被接受)或者更高,您必须在运行时请求权限,否则只需像往常一样在Android Manifest中添加权限即可。

0

在API等级23及更高版本中,您必须在运行时管理权限。

如果您在API等级23或更高版本上设计应用程序目标,则旧版本不会有任何问题。

0

我可以分享我如何处理activity中的权限。您可以将如下代码的代码放入oncreate和onResume中。 正如在看到如果(Build.VERSION.SDK_INT> = Build.VERSION_CODES.M) 此代码为Android 6及以上只。 这就是为什么它以* isPermissionOK = true开头; *

isPermissionOK = true; 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 

     List<String> requiredPermissions = new ArrayList(); 
     requiredPermissions.add(android.Manifest.permission.INTERNET); 
     requiredPermissions.add(android.Manifest.permission.ACCESS_NETWORK_STATE); 
     requiredPermissions.add(android.Manifest.permission.ACCESS_WIFI_STATE); 
     requiredPermissions.add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE); 
     requiredPermissions.add(android.Manifest.permission.WAKE_LOCK); 
     requiredPermissions.add(android.Manifest.permission.READ_PHONE_STATE); 
     requiredPermissions.add(android.Manifest.permission.BLUETOOTH); 
     requiredPermissions.add(android.Manifest.permission.BLUETOOTH_ADMIN); 
     requiredPermissions.add(android.Manifest.permission.ACCESS_COARSE_LOCATION); 
     requiredPermissions.add(android.Manifest.permission.ACCESS_FINE_LOCATION); 
     requiredPermissions.add(android.Manifest.permission.READ_EXTERNAL_STORAGE); 

     for (int i = 0; i < requiredPermissions.size(); i++) { 
      if (ContextCompat.checkSelfPermission(mContext, requiredPermissions.get(i)) != PackageManager.PERMISSION_GRANTED) { 
       isPermissionOK = false; 
       break; 
      } 
     } 
    } 


    if (!isPermissionOK) { 
     return; 
    }