6

たとえば、内部ファイルをギャラリーに公開するために FileProvider を使用しています。より均一にするために、外部ファイルも(外部パス経由で)プロバイダーに入れましたが、リムーバブルSDカード内のファイルでは機能しません。そのフォルダのようなものを言うことは許可されていません。

どんな助けでも大歓迎です。

どうも

4

6 に答える 6

7

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>ため、将来変更される可能性があることに注意してください。

于 2016-06-14T09:18:21.850 に答える