if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ //表示未授權時
//進行授權
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
}
String fileName ;
File file ;
if(Build.BRAND .equals("Xiaomi") ){ // 小米手機
fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/"+bitName ;
}else{ // Meizu 、Oppo
fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/"+bitName ;
}
file = new File(fileName);
if(file.exists()){
file.delete();
}
FileOutputStream out;
try{
out = new FileOutputStream(file);
// 格式為 JPEG,照相機拍出的圖片為JPEG格式的,PNG格式的不能顯示在相冊中
if(bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out))
{
out.flush();
out.close();
// 插入圖庫
MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), bitName, null);
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
// 發送廣播,通知重繪圖庫的顯示
this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));
}
報錯java.io.FileNotFoundException: /storage/emulated/0/DCIM/asdf.jpg: open faile EACCES (Permission denied)
uj5u.com熱心網友回復:
我猜是6.0 7.0 8.0獲取手機記憶體卡地址得問題,你搜搜6.0以上讀取路徑的答案試試uj5u.com熱心網友回復:
build.gradle檔案里面是這樣的
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "cn.cloudbae.aaa"
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "1.1.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
不懂是不是因為這個
uj5u.com熱心網友回復:
DCIM這個檔案夾SD卡上存在嗎?uj5u.com熱心網友回復:
都說了,沒有權限,android 10對檔案權限進行了修改,參見“android 10 新特性”轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/27277.html
標籤:Android
上一篇:Android Attempt to invoke virtual method 'boolean android.os.Bundle.getBoolean(j
