zoukankan      html  css  js  c++  java
  • Android 动态申请权限的两种方式

    第一种:

    //申请权限
    if (Build.VERSION.SDK_INT >= 23) {
    int REQUEST_CODE_CONTACT = 101;
    String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE,
    Manifest.permission.WRITE_EXTERNAL_STORAGE,
    Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS};
    //验证是否许可权限
    for (String str : permissions) {
    if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
    //申请权限
    this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
    }
    }

    第二种:

    String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
    List<String> mPermissionList = new ArrayList<>();

    // private ImageView welcomeImg = null;
    private static final int PERMISSION_REQUEST = 1;
    // 检查权限

    private void checkPermission() {
    mPermissionList.clear();

    //判断哪些权限未授予
    for (int i = 0; i < permissions.length; i++) {
    if (ContextCompat.checkSelfPermission(this, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
    mPermissionList.add(permissions[i]);
    }
    }
    /**
    * 判断是否为空
    */
    if (mPermissionList.isEmpty()) {//未授予的权限为空,表示都授予了

    } else {//请求权限方法
    String[] permissions = mPermissionList.toArray(new String[mPermissionList.size()]);//将List转为数组
    ActivityCompat.requestPermissions(MainActivity.this, permissions, PERMISSION_REQUEST);
    }
    }

    /**
    * 响应授权
    * 这里不管用户是否拒绝,都进入首页,不再重复申请权限
    */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
    case PERMISSION_REQUEST:

    break;
    default:
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    break;
    }

    调用:

    public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    checkPermission();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }
    }

    ————————————————
    版权声明:本文为CSDN博主「码点」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_31939617/article/details/108244616

  • 相关阅读:
    那些年,我还在学习asp.net(二)
    那些年,我还在学ADO.NET
    那些年,我还在学css
    数据库存储过程游标函数
    数据库视图索引触发器
    那些年,我还在学asp.net(一)
    向SQL2005中导入.dbf文件中的数据
    那些年,我还在学习html
    CMenu遍历
    网站记载
  • 原文地址:https://www.cnblogs.com/javalinux/p/14474729.html
Copyright © 2011-2022 走看看