我想要的圖像文件複製與此代碼:如何將圖像複製到SD卡上的現有目錄?
InputStream fileInputStream = null;
OutputStream fileOutputStream = null;
String inPath = "/storage/emulated/0/Pictures/MyImage.jpg";
String outPath = "/storage/extSdCard/MyFolder/MyImage.jpg";
try {
verifyStoragePermissions(this);
fileInputStream = new FileInputStream(new File(inPath));
File outputFile = new File(outPath);
if (!outputFile.exists()) {
try {
outPutFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
fileOutputStream = new FileOutputStream(outputFile);
byte[] buffer = new byte[1024];
int read;
while ((read = fileInputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, read);
}
fileInputStream.close();
fileInputStream = null;
fileOutputStream.flush();
fileOutputStream.close();
fileOutputStream = null;
} catch (Exception e) {
Log.e("tag", e.getMessage());
}
而這是用於在SDK> = 23
// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
/**
* Checks if the app has permission to write to device storage
*
* If the app does not has permission then the user will be prompted to grant permissions
*
* @param activity
*/
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
);
}
}
而且結果驗證存儲權限的方法是這樣的錯誤發生在達到buffer
行之前。
Unable to decode stream: java.io.FileNotFoundException: /storage/extSdCard/MyFolder/MyImage.jpg: open failed: ENOENT (No such file or directory)
我有SD卡和畫廊的應用程序上MyFolder
在我的設備將圖像複製到該目錄中沒有任何問題。
注意:權限是在清單中(在應用程序標記前的正確位置)和內部活動(對於skd> = 23)中授予的。
EDITS:
實現創建
fileOutputStream
之前文件的建議(沒有幫助)。降低targetSdkVersion以超過與權限相關的任何可能的問題,但仍然沒有成功。
targetSdkVersion 22
創建這樣
File
:File outFile = new File("/storage/extSdCard", "MyFolder/MyImage.jpg");
也取得了不結果。
我測試它的Android版本22
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
'打開失敗:EACCES(權限被拒絕)' – Eftekhari
試過你的答案,但沒有幫助。 – Eftekhari