首页 > 系统 > Android > 正文

android ---批量申请权限

2019-11-06 09:58:41
字体:
来源:转载
供稿:网友

权限

最近在写的App 在7.0 的时候需要获取一些危险权限(关于危险权限可以看:https://developer.android.google.cn/guide/topics/security/permissions.html#normal-dangerous)

android官方定义的危险权限 刚开始写的时候是一个一个的获取,开始觉得没有什么,但是到后期获取的权限多了,就感觉有点麻烦了,并且特别烦人。所以找找看有没有比较简单的做法,后来在模拟器上发现了他们的通讯录,添加完联系人后提示获取权限的一个对话框,

模拟器的通讯录权限获取

所以就想能不能也这样做,后来发现可以然后就简单记录一下,看代码:

/** * Created by stevefat on 2017/2/27. */public class BaseActivity extends AppCompatActivity { PRivate List<String> needPermission; private final int REQUEST_CODE_PERMISSION = 0; private String[] permissionArray = new String[]{ Manifest.permission.READ_CONTACTS, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.SEND_SMS, Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.access_COARSE_LOCATION }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } public void askMultiplePermission() { needPermission = new ArrayList<>(); for (String permissionName : permissionArray) { if (!PermissionHelper.checkIsAskPermission(this, permissionName)) { needPermission.add(permissionName); } } if (needPermission.size() > 0) { //开始申请权限 ActivityCompat.requestPermissions(this, needPermission.toArray(new String[needPermission.size()]), REQUEST_CODE_PERMISSION); } else { //获取数据 } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {// super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case REQUEST_CODE_PERMISSION: Map<String, Integer> permissionMap = new HashMap<>(); for (String name : needPermission) { permissionMap.put(name, PackageManager.PERMISSION_GRANTED); } for (int i = 0; i < permissions.length; i++) { permissionMap.put(permissions[i], grantResults[i]); } if (checkIsAskPermissionState(permissionMap, permissions)) { //获取数据 } else { //提示权限获取不完成,可能有的功能不能使用 } break; } } public boolean checkIsAskPermission(Context context, String permission) { if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { return false; } else { return true; } } public boolean checkIsAskPermissionState(Map<String, Integer> maps, String[] list) { for (int i = 0; i < list.length; i++) { if (maps.get(list[i]) != PackageManager.PERMISSION_GRANTED) { return false; } } return true; }}

以上为简单代码记录,可以在继续封装一下。 参考: 1. http://www.jianshu.com/p/01123400c881 2. https://developer.android.google.cn/guide/topics/security/permissions.html#normal-dangerous 3. https://www.google.com.hk

请善用google 找问题


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表