たとえば、内部ファイルをギャラリーに公開するために FileProvider を使用しています。より均一にするために、外部ファイルも(外部パス経由で)プロバイダーに入れましたが、リムーバブルSDカード内のファイルでは機能しません。そのフォルダのようなものを言うことは許可されていません。
どんな助けでも大歓迎です。
どうも
たとえば、内部ファイルをギャラリーに公開するために FileProvider を使用しています。より均一にするために、外部ファイルも(外部パス経由で)プロバイダーに入れましたが、リムーバブルSDカード内のファイルでは機能しません。そのフォルダのようなものを言うことは許可されていません。
どんな助けでも大歓迎です。
どうも
FileProvider
コードを見てみましょう。
private static PathStrategy parsePathStrategy(Context context, String authority)
...
int type;
while ((type = in.next()) != END_DOCUMENT) {
if (type == START_TAG) {
final String tag = in.getName();
final String name = in.getAttributeValue(null, ATTR_NAME);
String path = in.getAttributeValue(null, ATTR_PATH);
File target = null;
if (TAG_ROOT_PATH.equals(tag)) {
target = buildPath(DEVICE_ROOT, path);
} else if (TAG_FILES_PATH.equals(tag)) {
target = buildPath(context.getFilesDir(), path);
} else if (TAG_CACHE_PATH.equals(tag)) {
target = buildPath(context.getCacheDir(), path);
} else if (TAG_EXTERNAL.equals(tag)) {
target = buildPath(Environment.getExternalStorageDirectory(), path);
}
if (target != null) {
strat.addRoot(name, target);
}
}
}
return strat;
}
FileProvider
タグroot-path
(DEVICE_ROOT 定数) を使用して、ディレクトリへの絶対パスを受け入れました。したがって、以下のように、セカンダリ外部ディスクのファイル フォルダーに絶対パスを追加するだけです。
<root-path path="/storage/extSdCard/Android/data/com.edufii/files/image/" name="image-ext2" />
<root-path path="/storage/extSdCard/Android/data/com.edufii/files/video/" name="video-ext2" />
<root-path path="/storage/extSdCard/Android/data/com.edufii/files/datafile/" name="datafile-ext2" />
<root-path path="/storage/extSdCard/Android/data/com.edufii/files/audio/" name="audio-ext2" />
公式ドキュメントには について何も記載されていない<root-path>
ため、将来変更される可能性があることに注意してください。