Android Photo Gallery不会从OnActivityResult中的数据返回正确的Uri

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Photo Gallery不会从OnActivityResult中的数据返回正确的Uri相关的知识,希望对你有一定的参考价值。

我正在使用android studio。我试图处理画廊中的照片。

我打电话给startActivityForResult(photoPickerIntent, REQUEST_IMAGE_Load);

在受保护的void onActivityResult(int requestCode, int resultCode, Intent data)

Uri返回的data.getData()不正确。喜欢

内容://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F128/ORIGINAL/NONE/1980269994

那没有图像名称。

怎么绕过它?谢谢。

答案

如果您正在使用

requirdUri = Uri.fromFile(theSrcPath);

您的设备高于Nauget您应该使用来自相机和图库的获取URI的代码

您应该在Method下面为用户创建提供者。为此你必须在里面创建一个文件夹

res - > Xml - >并添加一个名为File_path_public.xml的文件。注意:您可以选择任何文件名

和文件内部放置代码

<?xml version="1.0" encoding="UTF-8"?>

-<paths xmlns:android="http://schemas.android.com/apk/res/android">

<external-path path="." name="external_files"/>

</paths>

并在您的清单文件内部应用程序标记创建一个提供商像:

<!-- this is For Access External file Storage -->
<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="com.example.appName.provider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths_public" />
</provider>

然后在下面创建此功能:

public static Uri getUriFromFile(Context theCtx, File theSrcPath) {
        Uri requirdUri = null;

        // Above Compile SDKversion: 25 -- Uri.fromFile Not working
        // So we have to use Provider
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            requirdUri = FileProvider.getUriForFile(theCtx,
                    theCtx.getApplicationContext().getPackageName() + CommonUtils.PROVIDER_FILE_EXTENSION,
                    theSrcPath);
        } else {
            requirdUri = Uri.fromFile(theSrcPath);
        }

        return requirdUri;
    }

请注意,您应该在清单中拥有外部存储权限。

另一答案

如果你想要图像名称,那么你应该创建一个文件,然后从中获取一个名称。例如:

File f = new File(uri.getPath());
String imageName = f.getName();

以上是关于Android Photo Gallery不会从OnActivityResult中的数据返回正确的Uri的主要内容,如果未能解决你的问题,请参考以下文章

Android:从 SD 卡显示图像

双击图片只是打开windows photo gallery这个程序,而不是显示图像

如何在 .NET 中处理具有 Windows Photo Gallery 质量的整页打印图像?

[android] 从gallery获取图片

代码如何从 Gallery Android 加载图像

Android 7.0 Gallery图库源码分析1 - 初识Gallery源码