android 6.0 内部SD卡权限管理的方法
2016-11-15 10:46
316 查看
android 6.0以后,权限的管理方法就不仅局限于androidManifest.xml了,APK 如果需要权限,必须要在代码里实现权限的申请。
下面是实时查看权限的许可情况和实时撤销权限许可的命令(不用每次都去: 设置->应用->xxx应用->应用信息->权限->权限列表,修改权限的许可)的方法
Use the adb tool to manage permissions from the command line:
List permissions and status by group: 这个只是列出设备的所有的危险权限,并没有命令来显示某个应用的权限的许可情况(这点不好)
Grant or revoke one or more permissions:
Analyze your app for services that use permissions.
查看内部SD权限的读取权限
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
权限的申请判断代码如下:
如果verifyStoragePermissions 返回时false,那么需要实现权限的申请处理,实现onRequestPermissionResult
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
/×××do request function(into apk)×××××/
} else {
Toast.makeText(getApplicationContext(),
"storage permission denied,it will exit apk",
Toast.LENGTH_LONG).show();
/×××do request function(exitapk)×××××/
finish();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
break;
}
}
}
如果verifyStoragePermissions返回true则直接进入APK或Activity.
其他的应用可以参考如下链接:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html http://www.jianshu.com/p/a51593817825 http://blog.csdn.net/lmj623565791/article/details/50709663 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html http://blog.csdn.net/yangqingqo/article/details/48371123/
下面是实时查看权限的许可情况和实时撤销权限许可的命令(不用每次都去: 设置->应用->xxx应用->应用信息->权限->权限列表,修改权限的许可)的方法
Use the adb tool to manage permissions from the command line:
List permissions and status by group: 这个只是列出设备的所有的危险权限,并没有命令来显示某个应用的权限的许可情况(这点不好)
$ adb shell pm list permissions -d -g
Grant or revoke one or more permissions:
$ adb shell pm [grant|revoke] <permission-name> ...
Analyze your app for services that use permissions.
查看内部SD权限的读取权限
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
权限的申请判断代码如下:
/*** group:android.permission-group.STORAGE permission:android.permission.READ_EXTERNAL_STORAGE permission:android.permission.WRITE_EXTERNAL_STORAGE ***/ private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; private boolean verifyStoragePermissions(Activity activity) { if(Util.SDK_INT < 23) /*******below android 6.0*******/ { return true; } // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions(activity,PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); return false; } else { return true; } }
如果verifyStoragePermissions 返回时false,那么需要实现权限的申请处理,实现onRequestPermissionResult
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
/×××do request function(into apk)×××××/
} else {
Toast.makeText(getApplicationContext(),
"storage permission denied,it will exit apk",
Toast.LENGTH_LONG).show();
/×××do request function(exitapk)×××××/
finish();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
break;
}
}
}
如果verifyStoragePermissions返回true则直接进入APK或Activity.
其他的应用可以参考如下链接:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html http://www.jianshu.com/p/a51593817825 http://blog.csdn.net/lmj623565791/article/details/50709663 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1110/3670.html http://blog.csdn.net/yangqingqo/article/details/48371123/
相关文章推荐
- Android 采用AOP方式封装6.0权限管理的方法
- Android 6.0: 动态权限管理的解决方案
- Android 6.0 运行时权限管理最佳实践
- Android 6.0 运行时权限管理最佳实践
- Android 6.0 运行时权限管理最佳实践
- android 6.0 动态申请权限后 相机的使用核心方法
- Android 6.0后所必须的运行时权限申请的常用权限集合及使用方法
- Android 6.0的权限管理
- Android权限管理原理(含6.0)
- Android权限管理原理(含6.0)
- Android权限管理原理(含6.0)
- Android权限管理原理(含6.0)
- Android权限管理原理(含6.0)
- Android拍照存储文件报open failed: ENOENT (No such file or directory)(适配不同手机的方法)以及6.0动态权限
- android 6.0 权限授权方法
- Android 6.0动态权限及跳转GPS设置界面的方法
- Android 6.0以上权限拒绝打开权限设置界面的解决方法
- Android 6.0 扫描不到 Ble 设备需开启位置权限的方法
- Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法
- android检测SD卡读写权限方法