錯誤描述:
String path=photoPath + photoPathimage; if (new File(path).exists()) { bm = BitmapFactory.decodeFile(path); } Bitmap take = ResizeBitmap(bm, 300); v_addimage.setImageBitmap(take); bm.recycle();//太大記得回收
判斷文件存在,但是bm一直返回null
網上解決辦法 增加文件讀寫權限
private void getPermission() { PackageManager pm = getPackageManager(); boolean permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.CAMERA", "com.zhengyuan.learningtakephoto")); if (!permission) { //沒有權限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{Manifest.permission.CAMERA}, 15); } } permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_EXTERNAL_STORAGE", "com.zhengyuan.learningtakephoto")); if (!permission) { //沒有權限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 15); } } permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.WRITE_EXTERNAL_STORAGE", "com.zhengyuan.learningtakephoto")); if (!permission) { //沒有權限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 15); } } }
試了下 好像並不怎么行。
使用如下動態授權權限,進入會提示用戶是否授權寫入權限,確認就可以操作文件了。
//TODO 設置讀寫權限 if (Build.VERSION.SDK_INT >= 23) { int REQUEST_CODE_CONTACT = 101; String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE}; //驗證是否許可權限 for (String str : permissions) { if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) { //申請權限 this.requestPermissions(permissions, REQUEST_CODE_CONTACT); } } }