Android 1.5を使用しています。データディレクトリに読み取り/書き込み権限がありません
System.out.println("DAta can write??--->"+Environment.getDataDirectory().canWrite());
System.out.println("DAta can read??--->"+Environment.getDataDirectory().canRead());
したがって、データディレクトリのアクセス許可を提供する方法を教えてください。
私がやろうとしていることは、ファイルを作成し、以下のようにエミュレータのデータストレージにコンテンツを追加することです
private void writeToSDCard() {
try {
File lroot = Environment.getDataDirectory();
if (lroot.canWrite()){
File lfile = new File(lroot, "samplefile.txt");
FileWriter lfilewriter = new FileWriter(lfile);
BufferedWriter lout = new BufferedWriter(lfilewriter);
lout.write("XXXXXXXXXXXXXXXXXX");
lout.close();
}
} catch (IOException e) {
Log.e(m_cTAG, "Could not write file " + e.getMessage());
}
}
あなたはデータディレクトリを見るべきではありません。これは電話のストレージにあるシステムディレクトリであり、通常は_/data
_であり、アプリケーションに書き込み権限はありません。
アプリケーションがファイルを書き込む必要があるディレクトリは、 Context.getFilesDir()
method によって返されます。 _/data/data/com.yourdomain.YourApp/files
_のようになります。
電話のストレージ内のファイルに書き込みたい場合は、 Context.openFileOutput()
method を使用します。
SDCardへのパスが必要な場合は、 Environment.getExternalStorageDirectory()
method を使用します。 SDCardに書き込むには、マニフェストに以下を追加して、アプリケーションに適切なアクセス許可を与える必要があります。
_<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
_
SDCardに書き込む場合は、getExternalStorageState()
メソッドを使用してその状態を確認する必要もあります。
アプリケーションで行う小さなファイルを保存している場合、これらはSDカードではなく携帯電話のストレージに入る可能性があるため、Context.openFileOutput()
およびContext.openFileInput()
メソッドを使用します。
したがって、コードでは次のようなことを考慮します。
_OutputStream os = openFileOutput("samplefile.txt", MODE_PRIVATE);
BufferedWriter lout = new BufferedWriter(new OutputStreamWriter(os));
_