android 6.0动态获取权限
说明:在我们安装一款APP的时候,通常都是想用户获取一大堆的权限,这深深刺痛了很多用户不安的心里。担心获取信息太多,没有安全感,但是我们再调用系统自带的媒体控件时又不得不获取权限。这样子就需要比较灵活的方式去跟用户索取对应的权限。
举个栗子: 我们在拍照的时候需要调用摄像头的权限 我们会在这里设置权限的判断 代码如下
if (ContextCompat.checkSelfPermission(mHostActivity.activity(), android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(“mHostActivity.activity()”, new String[]{Manifest.permission.CAMERA}, 1000); } else { //说明已经获取到摄像头权限了 想干嘛干嘛 }
注意: 1、 mHostActivity.activity() 必须是你基类的activity 。
2、new String[]{Manifest.permission.CAMERA} 是拿到你需要请求的权限。
3、1000 这个是自定义的int参数值,回调的时候判断。
然后通过方法回调 的方式进行判断用户是否允许与禁止,我们权限的请求。
/** * 获取权限的返回 * @param requestCode * @param permissions * @param grantResults */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1000) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { ToastUtils.showToast(ChooseRiceActivity.this, "相机权限已申请"); } else { ToastUtils.showToast(ChooseRiceActivity.this, "相机权限已被禁止,请在设置中打开"); } } }
至此,就可以获取到权限了。