7

私は現在、アプリの開発と外部 SD カードの使用に関していくつかの問題を抱えています。

developer.android.com から

すべての Android 互換デバイスは、ファイルの保存に使用できる共有の「外部ストレージ」をサポートしています。これは、リムーバブル ストレージ メディア (SD カードなど) または内部 (非リムーバブル) ストレージのいずれかです。外部ストレージに保存されたファイルは誰でも読み取り可能であり、USB 大容量ストレージを有効にしてコンピューター上のファイルを転送すると、ユーザーが変更できます。

多分それは問題ですか?

LG L5 (E610) を使用しています。

マニフェスト ファイルに正しいアクセス許可を追加しました。

私の他の問題は、この問題に関連している可能性があります

どんな助けでも大歓迎です。ありがとうございました。

4

2 に答える 2

6

あなたが言った:

最初の問題は、SD カードがマウントされているかどうかを確認することです。この関数は、SD カードが挿入されていない場合でも true を返します。

まったく明確ではないため、把握するのに時間がかかるものに出くわしたと思います。

Android には、2 種類のメモリがあります。

  • システム 1 は、常に利用可能で、高度に保護されています。アプリは専用の小さな部分にしかアクセスできず、他のアプリはそこにあるデータを読み取ることができません。
  • 多くの場合、パブリック、外部、または「sdcard」と呼ばれる共有のもの。すべてのアプリには、そのすべてへの読み取り/書き込みアクセス権があります。ただし、コンピューターに「マウント」できるため、常に利用できるとは限りません。Androidでマウントを解除して非表示にする効果があります。(ただし、Android 3.X より前のみ)。

野生では 3 種類のデバイスが見つかります。

  • 一部のデバイスでは、この共有メモリはデバイス内にはんだ付けされたチップ上にあります。そのため、sdcard という名前は適切ではありません。それでも、パスは「/sdcard」である可能性があります
  • 他のデバイスでは、この共有メモリは取り外し可能な実際の SD カードにあります。
  • 他の一部のデバイスでは、このメモリはチップ上の一部用であり、SD カード上の別の部分用です。

あなたが言ったことに基づいて、あなたは第 3 種類のデバイスを使用していると思います。したがって、物理的な SD カードは次のようなパスにあります: /mnt/sdcard/external_sd/. 悲しいことに、これはデバイス固有のものです。Android API にこのパスを取得するものはないと思います。

また、Android 3.X 以降、この共有メモリを「マウント」する必要がなくなりました。Android では MTP プロトコルを使用しているため、共有メモリは常に存在します。

これが、SD カードが取り外されていても isExternalStorageAvailable() が true を返す理由です。

于 2012-10-19T12:26:58.340 に答える
0

それを修正しました、それはそれ自身の問題でした。

助けてくれてありがとう..

于 2012-10-22T12:44:41.260 に答える