无法使用FileProvider从目录中保存图像

时间:2016-11-28 14:32:24

标签: android image-processing android-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>

1 个答案:

答案 0 :(得分:0)

这是解决方案。

storageDir.mkdirs();

上面的代码返回 false ,这是因为我没有在外部存储中写入权限。我在我的android清单文件中添加了以下代码。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!-- other code here-->   

</manifest>

感谢 greenapp 指出storageDir.mkdirs。