1

実行時にSDカードまたは内部ストレージからいくつかのファイルを読み書きする必要があるプログラムを開発しています。sdcardを携帯電話にマウントすると正しく動作しますが、sdcardをアンマウントすると、アプリケーションでエラーが発生します。Htc one xのようにカードスロットがない電話や、SDカードが挿入されていない電話の場合はどうすればよいですか?それらの電話のストレージにどのように書き込むことができますか?このファイルを/data/data/my.app.packageフォルダーに書き込みたくありません。別のアプリからファイルを読み取れる場所に書き込みたいです。 まず、このコードでストレージの状態を確認し、SDカードが挿入されて書き込み可能であれば問題ありません。しかし、SDカードが存在しない場合、私は本当に私が何をしなければならないのかわかりません。

string _location;  
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
          _location=Environment.getExternalStorageDirectory()+"/myfolder/";
          Toast.makeText(context, _location, 1000).show();
      }
      else
      {
          _location="/myfolder/"
          Toast.makeText(context, Environment.getExternalStorageDirectory().toString(), 1000).show();

      }

      mysync mys=new mysync(); // Asynctasc that writes some file on _location path
      mys.execute(_location);

私はとても混乱していて、残念ながら私は大きな内部ストレージを備えた電話を持っていません。私を助けてください。

4

1 に答える 1

1

実行時にSDカードまたは内部ストレージからいくつかのファイルを読み書きする必要があるプログラムを開発しています。

ここで、質問のタイトルで、内部ストレージに書き込みたいと言います。後で、内部ストレージに書き込みたくないと言います。

どっち?

Htc one xのようにカードスロットがない電話や、SDカードが挿入されていない電話の場合はどうすればよいですか?

外部ストレージ!="sdcard"。外部ストレージは、互換性定義ドキュメントの条件を満たしている限り、デバイスの製造元が望むものであれば何でもかまいません。したがって、外部ストレージは取り外し可能(SDカードなど)でも、取り外し可能(オンボードフラッシュの専用部分など)でもかまいません。また、Android 3.0以降では、外部ストレージは、内部ストレージを含む同じパーティション上の特別なサブディレクトリにすぎません。

あなたは外部ストレージが現在利用可能かどうかだけを気にします。Android3.0以降のデバイスではほぼ常に利用できるはずです。デバイスがホストコンピューターに接続されていて、ホストコンピューターがデバイスの外部ストレージをマウントしている場合(たとえば、Windowsのドライブ文字として)、Android1.xおよび2.xデバイスでは使用できません。

SDカードが存在しない場合、私は本当に私が何をしなければならないのかわかりません。

ホストコンピューターからデバイスをアンマウントしてくださいとユーザーに依頼します。または、そのような場合は内部ストレージに書き込むことにします。

于 2012-05-22T11:48:53.600 に答える