android 权限申请

public class WelcomeActivity extends AppCompatActivity {
    private Intent intent;

    String[] permission = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE};
    // 声明一个集合,在后面的代码中用来存储用户拒绝授权的权
    List mPermissionList = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {//WRITE_SETTINGS
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
        intent = new Intent(WelcomeActivity.this, MainActivity.class);
        checkPermission();//申请权限
    }


    //授权服务
    private void checkPermission() {
        for (int i = 0; i < permission.length; i++) {
            if (ContextCompat.checkSelfPermission(WelcomeActivity.this, permission[i]) != PackageManager.PERMISSION_GRANTED) {
                mPermissionList.add(permission[i]);
            }
        }
        if (mPermissionList.isEmpty()) {//未授予的权限为空,表示都授予了
            Toast.makeText(WelcomeActivity.this, "已经授权", Toast.LENGTH_LONG).show();
            startActivity(intent);
        } else {//请求权限方法
            String[] permissions = mPermissionList.toArray(new String[mPermissionList.size()]);//将List转为数组
            ActivityCompat.requestPermissions(WelcomeActivity.this, permissions, 1);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == 1) {
            for (int i = 0; i < grantResults.length; i++) {
                if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {//用户拒绝授权的权限
                    //判断是否勾选禁止后不再询问
                    boolean showRequestPermission = ActivityCompat.shouldShowRequestPermissionRationale(WelcomeActivity.this, permissions[i]);
                    if (showRequestPermission) {
                        Toast.makeText(WelcomeActivity.this, "权限未申请", Toast.LENGTH_LONG).show();
                    }

                } else {//用户同意的权限
                    startActivity(intent);
                }
            }
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

你可能感兴趣的:(android 权限申请)