Androidには、SDカードとストレージの一般的な取り扱い方法に関して多くの変更がありました。
API 23(Android 6)以降、状況は再び変化しているようです...
API 23には、少なくとも2つの新しいものとストレージ関連のものがあります。
SDカードを搭載したAndroid 6デバイスは存在しないため、エミュレータ自体にはSDカードを使用する機能がないため、何が起こっているのかを知ることはまだ不可能です。
SDカードは、DocumentFileの代わりにFile-APIを使用してアクセスを取得しますか?
すべての外部ストレージパス(SDカードを含む)へのアクセスが必要な場合、この許可を2回要求する必要があることを意味します。1つはプライマリ外部ストレージ用、もう1つはSDカード用です。
許可を手動で付与する前に、SDカード上のファイルに何らかの方法でアクセスできますか?
ユーザーが「Adoptable Storage Devices」を使用することを選択したとします。アプリのファイルのパスを取得するさまざまな機能にとって、それはどういう意味ですか?例:getFilesDir、getExternalFilesDir、...?そのため、getExternalFilesDirsの順序は変更されますか?
ユーザーがSDカードとの間でアプリを移動すると(「採用可能なストレージデバイス」を使用して)アプリのファイルはどうなりますか? SDカード上のアプリのファイルはどうですか?彼らは滞在しますか?または、彼らはどこかに移動しますか?
たとえば、アプリのSDカードのパス「/ storage/extSdCard/Android/data/appPackageName」に「file1.txt」があり、ファイル「file2.txt」(または同じ名前)がある場合パス「/ storage/emulated/0/Android/data/appPackageName」のプライマリ外部ストレージ上。切り替え後、これらのファイルはどうなりますか?仮にあったとしても、それらはどのようにして単一のフォルダーにマージされますか?
アプリをSDカードに移動するとき(「採用可能なストレージデバイス」を使用)、内部ストレージが使用されないことを意味しますか?
Adoptable Storage Devices関連する質問に答えてください:
- ユーザーが「Adoptable Storage Devices」を使用することを選択したとします。アプリのファイルのパスを取得するさまざまな機能にとって、それはどういう意味ですか?例:getFilesDir、getExternalFilesDir、...?そのため、getExternalFilesDirsの順序は変更されますか?
ユーザーが「Adoptable Storage Device」(内部フォーマット)としてSDカードを使用することを選択した場合、SDカードは内部ストレージとしてのみ使用可能になります。つまり、ダウンロードしたファイルを保存するSDカードは使用できません。関連するメソッドによって返されるパスの順序は変更されません。たとえば、ユーザーがSDカードを「Adoptable Storage Devices」としてフォーマットした場合、getExternalFilesDir()は外部ストレージパスのみをリストします。 SDカードのパスは使用できません。
- ユーザーがSDカードとの間でアプリを移動すると(「採用可能なストレージデバイス」を使用して)アプリのファイルはどうなりますか? SDカード上のアプリのファイルはどうですか?彼らは滞在しますか?または、彼らはどこかに移動しますか?たとえば、アプリのSDカードのパス「/ storage/extSdCard/Android/data/appPackageName」に「file1.txt」があり、ファイル「file2.txt」(または同じ名前)がある場合パス「/ storage/emulated/0/Android/data/appPackageName」のプライマリ外部ストレージ上。切り替え後、これらのファイルはどうなりますか?仮にあったとしても、それらはどのようにして単一のフォルダーにマージされますか?
ユーザーが自分のSDカードを「Adoptable Storage Devices」として選択する場合、ユーザーは"Format as internal"オプションを使用して、SDカードを内部ストレージとしてフォーマットする必要があります。フォーマットは、SDカードに保存されているすべてのデータ/ファイルが消去されることを意味します。同様に、ユーザーが「Adoptable Storage Devices」からSDカードを削除したい場合、ユーザーは再び"Format as portable"オプションを使用してSDカードをポータブルストレージとしてフォーマットする必要があります。
- アプリをSDカードに移動するとき(「採用可能なストレージデバイス」を使用)、内部ストレージが使用されないことを意味しますか?
はい、元の内部ストレージは使用されません。 SDカードを「Adoptable Storage Devices」として選択したため、SDカードストレージのみが使用されます。すべてのデータ/キャッシュはSDカードに保存されます
質問5に回答するには:Android 7、「パブリックデータ」領域のすべてのファイル、/storage/emulated/0/
(またはメーカー固有の場所。DCIM
Downloads
などを含むディレクトリ)は、完全に内部メモリに保存されるか、採用されたSDカードに保存されます。採用されたSDカードの初期フォーマットの後、ユーザーには「データを移行」する機会が提示され、_/storage/emulated/0
SDカードに。ユーザーはいつでもSettings/Storageに移動して、現在パブリックデータエリアを保持していないストレージエリアを選択し、⋮
(3つの縦のドット)右上のアイコンをクリックして、[データの移行]オプションのメニューを表示します。
採用されたカードが使用中の場合、ユーザーまたはアプリケーションが特定の公開ファイルをSDカードに強制する方法はないようです。それはすべてか無かです。 (アプリのプライベートストレージは、アプリがSDカードに移動されたかどうかに基づいて、内部ストレージまたはSDカードにあります。アプリも両方ではなく、どちらか一方のみを使用するようです。 )