2

Android Marshmallow で導入された「Adoptable storage」を試しています。予想される動作と、アプリが「Adoptable storage」を処理する方法についてのガイダンスが必要です。

  • 「内部としてフォーマット」を使用して、「マイクロ SD」カードを Adoptable ストレージとしてフォーマットします</li>
  • フォーマットが完了すると、次の 2 つのオプションがユーザーに提供されます。
    1. 今すぐ移動
    2. 後で移動

a. 今すぐ移動:ユーザーがこのオプションを選択すると、getExternalFilesDirs によって返されるパスは「/storage/emulated/0/Android/data/PACKAGE_NAME/files」であり、実際にはマイクロ SD カード のファイル システムを指します。

b. 後で移動:ユーザーがこのオプションを選択すると、getExternalFilesDirs によって返されるパスは「/storage/emulated/0/Android/data/PACKAGE_NAME/files」であり、実際には内部組み込みメモリ のファイル システムを指します。

どちらの場合も、アプリは 1 つのストレージしか見ることができず、写真、ビデオなどのデータを保存するためにアプリから他のストレージに完全にアクセスすることはできません。内部 SD とマイクロ SD の両方のストレージ パスにアクセスする方法はありますか? microSDカードを「Adoptable storage」でフォーマットした場合のカード?

このドキュメントとは別に、この採用されたストレージをアプリがどのように処理する必要があるかについての詳細なドキュメントは見つかりませんでした。アプリが使用する必要がある API はありますか?

例:

ユーザーの電話に 32 GB の内部メモリと 32 GB のマイクロ SD カードがあるとします。カードが「ポータブル ストレージ」としてフォーマットされている場合、ユーザーは 32GB (内部) と 32GB (マイクロ SD カード) の両方を使用してデータを保存できます。

ただし、ユーザーがカードを「内部メモリ」としてフォーマットした場合、ユーザーはデータ (写真/ビデオ/音楽など) をこの 32 GB ストレージの場所のいずれかにのみ保存できますが、両方の場所には保存できません。システムは、ストレージの場所 (内部からマイクロ SD カードへ、またはその逆) 間で「データを移行する」オプションを提供していますが、アプリは 32​​ GB のストレージしか使用できません (ユーザーは事実上、メディア ファイルを保存するために 32 GB のストレージを失います)。アプリのインストールにのみ使用できますか?)。

これは予想される動作ですか?

注: 使用したテスト デバイス - Moto X Play & HTC 10 - どちらも Android 6.0.1 を実行 ここに画像の説明を入力

4

1 に答える 1

1

getExternalFilesDir()常に外部ストレージを指しますが、これは利用できる場合と利用できない場合があります。getFilesDir()アプリが現在保存されている場所へのパスを動的に取得するために使用します。

Adoptable Storage はいつでもアプリを移動する可能性があるため、この結果を保存しないでください。ドキュメントから:

呼び出し元のアプリが採用されたストレージ デバイスに移動された場合、返されるパスは時間の経過とともに変化する可能性があるため、相対パスのみを保持する必要があります。

于 2017-01-08T18:06:31.813 に答える