0
我正在使用FileProvider與設備的相機拍照,但圖像未保存在目錄或任何其他目錄中。如何解決這個問題,以便我可以將捕獲的圖像保存在目錄中?無法使用FileProvider從目錄保存圖像
MainActivity.java
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File storageDir = new File(Environment.getExternalStorageDirectory(), "Test-Folder");
if (!storageDir.exists()) {
storageDir.mkdirs();
}
File image = new File(storageDir, "QR_" + timeStamp + ".png");
Uri photoUri = FileProvider.getUriForFile(MainActivity.this, "com.test", image);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
List<ResolveInfo> resInfoList =
getPackageManager()
.queryIntentActivities(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
grantUriPermission(packageName, photoUri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
startActivityForResult(cameraIntent, 1);
provider_paths.xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="Test-Folder/"/>
</paths>
也許在這個特定設備上的相機應用程序不支持'內容''Uri'值。例如,谷歌自己的相機應用直到今年夏天才支持視頻的「內容」方案。 – CommonsWare
'storageDir.mkdirs();'。你應該檢查返回值,因爲mkdirs可能會失敗,然後返回false。如果它是假的,則向用戶顯示敬酒並返回。不要繼續執行其他代碼。我敢打賭,該目錄並沒有創建開始。 – greenapps
@greenapps hey bud,mkdirs返回false,因爲我沒有在清單文件中放入寫入外部存儲權限。謝謝你! – zbryan