Android从6.0版本以上权限申请的机制就进行了升级。下面通过例子具体说明权限申请实现。
例如要实现内部存储器保存文件
首先需要像6.0以前在AndroidManifest.xml文件中进行权限的申请,
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" />
除了上面的两句外,还要在<application 下面添加
android:requestLegacyExternalStorage="true"
这样就完成了AndroidManifest.xml文件部分的设置。
然后是在MainActivity中添加权限动态申请
//权限请求 private void requestPermission() { // Here, thisActivity is the current activity if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_WRITE_CONTACTS); initView();//页面初始化 } else { initView();//页面初始化 } }
我的动态权限申请写的比较简单,仅是做申请,要想做的更完善,还需要对申请权限后用户实际操作进行判断,根据用户是否同意作出相应操作。假设用户都会同意情况下,上述的权限申请足够实现权限的获得。
提一点MY_PERMISSIONS_REQUEST_WRITE_CONTACTS就是一个变量定义,如我就申请了这个一个权限,将其定义为1.