0

最初のコード:

AssetManager mgr = DeviceListActivity.this.getApplicationContext().getAssets();

try {
    Log.e("Glenn:", address);
    FileOutputStream fout = mgr.openFd("device/device_address.txt").createOutputStream();
    PrintWriter _fout = new PrintWriter(fout);
    _fout.println(address);
    Log.e("Glenn", address);

    _fout.close();
    fout.close();

    InputStream fin =  mgr.open("device/device_address.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(fin));
    address = br.readLine(); 

    try {
        Log.e("Glenn:", address);
    } catch (NullPointerException e) {
        e.printStackTrace();
    }
} catch (IOException e) {
    e.printStackTrace();
    Log.e("Glenn", "error with OutputStream");
}

最初の 2 つの呼び出しで出力される address の値はLog.e()正しい値であり、実際にはデバイスの MAC アドレスです。ただし、ファイルから読み取ったアドレスの値をテストしようとすると、書き込まれたばかりで、呼び出しNullPointerException内でキャッチされました。Log.e()これは、ファイルから読み取られた値が であることを意味しますNULL。コードの何が問題なのか誰でも指摘できますか?

4

1 に答える 1

5

アプリのアセット ファイルに書き込むことはできません。読み取り権限のみがあり、書き込み権限はありません。AssetManagerは、アプリのアセット フォルダーからファイルを読み取るメソッドのみを提供します。

于 2012-07-03T13:12:34.967 に答える