血的教训 关于6.0的读取权限问题
2016-05-27 17:46
337 查看
本来做的头像设置的功能好好的(读取sd文件),可是当运行在华为5C(6.0)上时,马丹,不可行。
报的这个错!
打印这个方法检测能否读取:
当然是false。
可是我权限都加了呀
最后才知道在6.0不光要在mainfest中加上上面两个权限,还要在Activity中加上权限,调用这个方法即可。
2016.7.6添加6.0定位的权限:
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.CHANGE_WIFI_STATE,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.INTERNET,
Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS};
public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity,
Manifest.permission.ACCESS_FINE_LOCATION);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE);
}
}
String path = Environment.getExternalStorageDirectory().getPath()+ "/head.png"; if(!path.equals("")){ Bitmap b = BitmapFactory.decodeFile(path); if (b != null){ find_img_head.setImageBitmap(b); } }
报的这个错!
E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/head.png: open failed: EACCES (Permission denied)
打印这个方法检测能否读取:
File sd = Environment.getExternalStorageDirectory(); boolean can_write = sd.canWrite(); Log.e("tag","can_write:"+can_write);
当然是false。
可是我权限都加了呀
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
最后才知道在6.0不光要在mainfest中加上上面两个权限,还要在Activity中加上权限,调用这个方法即可。
private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
2016.7.6添加6.0定位的权限:
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.CHANGE_WIFI_STATE,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.INTERNET,
Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS};
public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity,
Manifest.permission.ACCESS_FINE_LOCATION);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE);
}
}
相关文章推荐
- 自定义UIView时怎么样设置背景图片。
- MT6627上FM RT信息很难显示出来
- Ubuntu系统安装、升级和安装插件应该知道的几件事
- JAVA学习(10) 继承(6) 使用父类类型调用子类
- 计算1-1/2+1/3-1/4+.....+1/99-1/100的值
- 计算1到100之间整数中9出现的次数
- 在屏幕上输出以下图案
- 输出0到999之间的水仙花数
- 输出“welcome to bit!”
- 模拟三次密码输入
- 求Sn= a+aa+aaa+aaaa+aaaaa的五项之和,求中a是一个数字
- 分别输出一个整型数的二进制的奇数位和偶数位
- 求两个数中二进制位不同的个数
- 判断某年是否是闰年
- 判断一个数是否是素数
- 计算2/1+3/2+5/3+8/5+.......+(共20项)
- 小球从100米高空落下,来会反弹10次后经过的路程和第10次反弹的高度
- 猴子偷桃问题
- 将一个无符号十进制数的二进制逆转,然后以输出
- 不用(a+b)/2的方式求平均数