あまりにも繰り返し質問を申し訳なく思っていますが、ここでの答えがstackoverflowで本当に助けてくれました。含まれている構成済みのルートを見つけることができません
FileProvider
を使用して、カスタムフォルダへのファイルにアクセスします。 provider_paths.xml
<paths>
<cache-path name="my_videos" path="MyFolderName/"/>
</paths>
(私は試した、代わりのcache-path
、files-path
、external-path
とexternal-files-path
)
作成におけるその後
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="my.package.name.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
:マニフェストに、<application>
タグ内私の宣言のファイル:
public static Uri getUriFromFile(File file, Context context) {
int flags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION;
Uri uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
context.grantUriPermission(context.getPackageName(), uri, flags);
return uri;
}
public static File getMyDirectory() {
File root = new File(context.getCacheDir(), "MyFolderName");
if(root.mkdir()) Log.e(Consts.TAG, "Directory created");
return root;
}
...
File outputFile = new File(getMyDirectory(), filename + ".mp4");
videoUri = getUriFromFile(outputFile, this);
(及び、代わりにcontext.getCacheDir()
、私はcontext.getFilesDir()
、Environment.getExternalStorageDirectory()
とcontext.getExternalFilesDir("")
を試してみました)
そして最後に、私は自分のファイルを取得したい:
パスを試してみましたString pathToFile = "/my_videos/filename.mp4";
Uri file = getUriFromFile(new File(pathToFile), context);
:
"/MyFolderName/filename.mp4"
"content://my.package.name.provider/my_videos/filename.mp4"
"content://my.package.name.provider/MyFolderName/filename.mp4"
この試行はすべて私にこのエラーをもたらしました:
Failed to find configured root that contains /my_videos/filename.mp4
私が間違っていることは何ですか?前もって感謝します!
同じ行をもう一度使用することは考えませんでした。実際に、第三者の図書館から私の質問で見られる 'pathToFile'が返ってきたのですが、なぜ私はすでにその行を使っているのですか?私はすでに道があります! 行のファイル名部分のみを使用して行を処理しました。どうもありがとう! –