android - 找不到包含 /data/data/my_package/cache/share_video_1610748162883.mp4 的已配置根目录
问题描述
我想在 WhatsApp 中分享我的视频。视频包含在我们托管的 URL 中。当用户点击 WhatsApp 图标视频应该从 URL 发送给用户。我尝试了很多事情,但无法成功。我不知道为什么这给了我这个例外。我做错了什么。
这是我的 Java 代码
@SuppressLint("StaticFieldLeak")
private class AsyncTaskExample extends AsyncTask<String, String, Uri> {
@Override
protected Uri doInBackground(String[] fileURL) {
Uri videoUri = null;
String s = Arrays.toString(fileURL);
String videoUrl = s.replaceAll("\\[", "").replaceAll("\\]", "");
try {
File rootFile = new File(getCacheDir(), "share_video_" + System.currentTimeMillis() + ".mp4");
URL url = new URL(videoUrl);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.connect();
FileOutputStream f = new FileOutputStream(rootFile);
InputStream in = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = in.read(buffer)) > 0) {
f.write(buffer, 0, len1);
}
videoUri = FileProvider.getUriForFile(getApplicationContext(), getPackageName() + ".fileprovider", rootFile);
f.close();
} catch (IOException e) {
Log.d("Error....", e.toString());
}
return videoUri; // returns the file path to the video from storage
}
@Override
protected void onPostExecute(Uri videoUri) {
super.onPostExecute(videoUri);
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("*/*");
i.setPackage("com.whatsapp.w4b");
i.putExtra(Intent.EXTRA_STREAM, videoUri); //to share video
startActivity(i);
}
}
主要文件
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="studio.pepup.app.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
文件_xml
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path name="external_files" path="." />
</paths>
解决方案
您的文件位于getCacheDir()
. 这意味着您需要更换:
<external-path name="external_files" path="." />
和:
<cache-path name="external_files" path="." />
有关更多信息,请参阅文档。
推荐阅读
- xamarin - 真的可以使用 Xamarin Forms 共享所有视图和视图控制器吗?
- python - 在 Anaconda 环境中使用 Openvino 的 OpenCV 构建
- python - django 应用程序在 heroku TypeError 上崩溃:预期的 str、字节或 os.PathLike 对象,而不是函数
- svn - 每个仓库的 TortoiseSVN 代理设置,而不是全局?
- python-3.x - 在使用 PdfPages 时关闭 Tkinter 中的 pyplot 对象会导致 Tkinter 实例停止
- python - Django Rest 框架权限和所有权
- javascript - 找不到模块但已安装在当前项目中(xml-js,Windows)
- java - Java Ledger API - 在提交命令中返回contractId
- oauth-2.0 - 如何通过配置更改身份令牌 WSO2 身份服务器中的颁发者声明
- azure-api-management - API 管理
失败并显示错误消息“无法访问已关闭的流”。