首页 > 解决方案 > 找不到包含 /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>

标签: android

解决方案


您的文件位于getCacheDir(). 这意味着您需要更换:

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

和:

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

有关更多信息,请参阅文档


推荐阅读