6

SDカードにバックアップファイルを保存するアプリがあります。HTC Nexus Oneやその他のAndroidスマートフォンでは正常に動作しますが、一部のスマートフォンでは動作しません(読み取りまたは書き込み)。

マニフェストで私はこれを設定しました:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

例(記録ファイルのパスを設定した場合):

OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory()
                    + "/mydata.dat");
//Writing file...(It doesn't work)

ファイルを正しく操作するためのSDカードの正しいパスを取得するにはどうすればよいですか?

4

3 に答える 3

0

あなたが「それはうまくいかない」と言うとき....正確には何が起こりますか?プログラムは文句なしに実行されますが、ファイルはsdcardに書き込まれませんか、それとも他の意味ですか?

ファイルが単にそこに到達していない場合、それはあなたのせいではなく、電話メーカーのせいです。getExternalStorageDirectory()から「/ mnt / sdcard」を返すデバイスをいくつか見ましたが、これは実際にはsdcardへのパスではありません。たとえば、少なくとも1つのMotorolaデバイスとSamsung Galaxy Tab(7 ")では、これが内部ストレージを指していても/ mnt / sdcardが返され、これらの各デバイスの外部ストレージは/ mnt/sdcard-extです。 。

これについて合法的にできることは何もありません-OEMはあなたに嘘をついています。回避策のハックが必要な場合は、/ proc / mountsを読み取って、sdcardへの実際のパスを見つけようとしますが、/ mnt / sdcardもそこに表示され、真実を区別する保証された方法はありません。すべてのデバイス。

于 2011-06-10T20:52:33.920 に答える
0

通常、AndroidではSDカードのルートに直接ファイルを書き込むことはできません。SDCardルートにフォルダを作成してから、新しく作成したフォルダ内にファイルを書き込む必要があります。

これを試してみてください、そうすればうまくいくはずです。

于 2013-07-25T13:45:55.700 に答える
-1

私はSonyXperiatipo dualとこれを持っています:

FILE* pFile = fopen("/mnt/sdcard/mydata.dat","w+");

この:

FILE* pFile = fopen("/sdcard/mydata.dat","w+");

どちらも問題なく動作します。(私はネイティブでそれをしました)

于 2013-07-25T12:53:14.227 に答える