gpt4 book ai didi

android - 如何读取 WhatsApp 媒体路径

转载 作者:行者123 更新时间:2023-11-29 23:45:59 24 4
gpt4 key购买 nike

我正在创建一个聊天应用程序,我在其中从 WhatsApp 之类的图库上传图像和视频,但是当我尝试选择已经由 WhatsApp 文件夹下载的图像时,我得到了这个路径

/storage/emulated/0/WhatsApp/Media/WhatsAppImages/IMG-20180717-WA0024.jpg

但是当我阅读这篇文章以获取显示图像的真实路径时,我得到了这个异常:

java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)

这是我的供应商

<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>

下面是文件路径

<resources>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="/storage/emulated/0" path="."/>
</paths>

这只发生在 WhatsApp 媒体上,任何人请告诉我解决方案。

提前致谢

最佳答案

android:authorities="${applicationId}"这里的application id是你的项目包名。

在你的应用程序 gradle 文件中定义

 defaultConfig {
applicationId "<your app Id>"
minSdkVersion 16
targetSdkVersion 25
versionCode 25
versionName '5.8'
multiDexEnabled true
}

/////

<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="<package name>.fileprovider" // which are defined in app gradle application id
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths_public" />
</provider>

你的xml文件应该是这样的

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="external_files"
path="." />
</paths>

和你的java代码很像。这里 file 是您尝试访问的文件路径

Uri uri = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() +
".provider", file);
} else {
uri = Uri.fromFile(file);
}

uri 中获取路径后,用它做任何你想做的事。

为了获得真正的路径试试这个它可能有效。

public String getRealPathFromURI(Uri contentURI) {
String result;
Cursor cursor = context.getContentResolver().query(contentURI, null,
null, null, null);

if (cursor == null) { // Source is Dropbox or other similar local file
// path
result = contentURI.getPath();
} else {
cursor.moveToFirst();
try {
int idx = cursor
.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
result = cursor.getString(idx);
} catch (Exception e) {
AppLog.handleException(ImageHelper.class.getName(), e);
Toast.makeText(context, context.getResources().getString(
R.string.error_get_image), Toast.LENGTH_SHORT).show();

result = "";
}
cursor.close();
}
return result;
}

关于android - 如何读取 WhatsApp 媒体路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51399457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com