运行时权限
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行时权限相关的知识,希望对你有一定的参考价值。
在fragment或者activity中的onCreate()方法中判断。
if(Build.VERSION.SDK_INT>=23){ //①checkSelfPermission 检查当前应用的权限 if(ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.READ_EXTERNAL_STORAGE)== PermissionChecker.PERMISSION_DENIED){ //②PERMISSION_DENIED说明没有权限需要手动申请 // requestPermissions 请求权限的方法 //第一个参数 activity //第二个参数 需要请求的权限的 权限String数组 //第三个参数 请求码 用来区分不同的权限请求 //需要注意 最后一个参数 requestCode需要>0 ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1); return; } }
requestPermissions()方法是异步的,不知道什么时候用户什么时候点击完,用户点击完授权,下面是回调方法
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { //③用户操作授权之后 会走这个回调方法 onRequestPermissionsResult if(grantResults[0]== PermissionChecker.PERMISSION_GRANTED){ // initData(); VBangFragment fragment = (VBangFragment) fragments.get(R.id.tab_vbang); fragment.initData(); }else{ ToastUtils.showToast(getApplicationContext(),"没有sd卡权限,无法获取音乐信息"); } super.onRequestPermissionsResult(requestCode, permissions, grantResults); }
以上是关于运行时权限的主要内容,如果未能解决你的问题,请参考以下文章
每当我运行我的片段时,这行代码 mapFragment.setRetainInstance(true);正在崩溃我的应用程序? [关闭]
具有运行时 pojos 的带有 Hibernate 的 OSGi 片段包