Android 6.0 多权限

本教程将介绍Android 6.0 多权限的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

Android 6.0 多权限 教程 第1张

问题描述

我知道 Android 6.0 有新的权限,我知道我可以用类似这样的方式调用它们

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
 PackageManager.PERMISSION_GRANTED) {
 ActivityCompat.requestPermissions(this,
  new String[] { 
Manifest.permission.WRITE_EXTERNAL_STORAGE
  }, PERMISSION_WRITE_STORAGE);
}

今天我看到一个需要 3 个权限的 Google 应用:联系人、短信和相机.它正在制作一个页面 1-3 并同时将它们全部调用以激活.

谁能告诉我怎么调用 4 个权限同时激活,比如短信、相机、联系人和存储?

示例(忘记了 google 应用的名称:( )
该应用需要短信、联系人和相机

应用程序询问我(并在第 1-3 页创建了一个对话框)激活短信、激活联系人和相机.所以这个谷歌应用程序将所有 3 个必需的权限一起调用,我的问题是我怎样才能获得相同的权限?

推荐答案

只需在 ActivityCompat.requestPermissions(...) 调用中包含所有 4 个权限,Android 就会像您提到的那样自动将它们分页在一起.

我有一个辅助方法来检查多个权限,看看是否有任何一个没有被授予.

public static boolean hasPermissions(Context context, String... permissions) {
 if (context != null && permissions != null) {
  for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
 return false;
}
  }
 }
 return true;
}

或者在 Kotlin 中:

fun hasPermissions(context: Context, vararg permissions: String): Boolean = permissions.all {
 ActivityCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
}

然后将所有权限发送给它.Android 只会询问它需要的那些.

// The request code used in ActivityCompat.requestPermissions()
// and returned in the Activity's onRequestPermissionsResult()
int PERMISSION_ALL = 1; 
String[] PERMISSIONS = {
  android.Manifest.permission.READ_CONTACTS, 
  android.Manifest.permission.WRITE_CONTACTS, 
  android.Manifest.permission.WRITE_EXTERNAL_STORAGE, 
  android.Manifest.permission.READ_SMS, 
  android.Manifest.permission.CAMERA
};

if (!hasPermissions(this, PERMISSIONS)) {
 ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}

好了关于Android 6.0 多权限的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。