助けてください....
テキストファイルを作成してSDカードに保存するAndroid2.2用のアプリを作成しました。別のアクティビティでは、このファイルを読み取り、配列に格納します。アプリは2.2で正常に動作し、4.1で私のサムスンネクサスで完全に動作しました。(ICS)しかし、ジェリービーンズ(4.2)にアップデートしたばかりで、ファイルを開こうとするとアプリがクラッシュするようになりました。4.2のマニフェストに読み取り権限を追加する方法に関するドキュメントを読み、これを追加しましたが、アプリがクラッシュします。ログキャットはエミュレーターでは正常に動作しますが、私の電話では動作しないため、ログキャットはありません。
4.2または読み取り用にファイルを開く別の方法に必要な特別な権限はありますか?
これがディレクトリを作成してファイルを書くための私のコードです...
//Create Reports Folder...........................................
File directory = new File
(Environment.getExternalStorageDirectory().getPath()+"/PatRecords");
if (!directory.exists()) {
directory.mkdir();
Toast.makeText(this, "NEW FOLDER CREATED", Toast.LENGTH_SHORT).show();
}
//If Sd card available, and writable with no errors, then write file.........
if ((mExternalStorageAvailable = true)&(mExternalStorageWriteable = true)&(Error==0))
{
try {
File ReportFile = new File(directory.getPath()+"/"+FileName$);
ReportFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(ReportFile);
OutputStreamWriter OutWriter = new OutputStreamWriter(fOut);
OutWriter.write(Tester$+"\r\n");
OutWriter.write(Company$+"\r\n");
OutWriter.write(Customer$+"\r\n");
OutWriter.write(Address1$+"\r\n");
OutWriter.write(Address2$+"\r\n");
OutWriter.write(PCode$+"\r\n");
OutWriter.write(Instr$+"\r\n");
OutWriter.write(Serial$+"\r\n");
OutWriter.close();
fOut.close();
Toast.makeText(this, "NEW FILE CREATED", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}//End of try/catch
}//End Write.....
そしてここに読むためのコードがあります....4.2ではなく4.1までは問題なく動作します...
FilePath=getIntent().getStringExtra("FileToOpen");
//Open File and read first all data.......
try {
BufferedReader br = new BufferedReader(new FileReader(FilePath));
Tester$ = br.readLine();
Company$ = br.readLine();
Customer$ = br.readLine();
Address1$ = br.readLine();
Address2$ = br.readLine();
PCode$ = br.readLine();
Instr$ = br.readLine();
InstrSerial$ = br.readLine();
NumOfTests$ = br.readLine();
br.close();
Toast.makeText(this, "FILE LOADED OK.", Toast.LENGTH_SHORT).show();
n = n+1; //Increment n for next test number....
}
catch (IOException e) {
//You'll need to add proper error handling here
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
どんな助けでも大歓迎です...見てくれてありがとう