4

「/mnt/sdcard/report/」に書き込もうとすると、Android で「open failed: EACCES (Permission denied)」というメッセージが表示されます。私の最初のステップは、機能しない「レポート」フォルダーを作成することです。次に、上記の例外をスローする書き込みを試みます。<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />アプリケーションタグのピア(外)として設定しています。エラーが発生したときに、エミュレーターで JUnit 計測テストを実行しようとしています。何か案は?コードは以下です。

        if (mReportDir == null) {
            if (mContext.getFilesDir() != null) {
                mOutputStream = mContext.openFileOutput(fileName, 0);
            } else {
                mOutputStream = mTargetContext.openFileOutput(fileName, 0);
            }
        } else {
            File f = new File(mReportDir);
            if (!f.exists()) {
                f.mkdirs();
            }
            mOutputStream = new FileOutputStream(new File(mReportDir, fileName));
        }

mReportDir は「/mnt/sdcard/report」に等しく、fileName は「junit-report.xml」に等しく、f.mkdirs は false を返し、ディレクトリは作成されません。なぜ許可が拒否されるのか疑問に思っています。カスタム JUnit テスト ランナーを再利用しようとしています。

avd 設定に hw.sdCard= yes を追加しました。起動後、シェルインして mount と入力します:

~$ adb shell
# mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,nosuid,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
none /acct cgroup rw,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0

ここでも、Ant スクリプトからプログラムで AVD を起動しています。SDカードをマウントするためにプログラムでできることはありますか?

4

1 に答える 1

10

問題を発見!AVD を作成したとき、SD カードのサイズを指定しませんでした。512MiB のサイズを編集して設定したところ、書き込み可能になりました。返信してくれたみんなありがとう!:)

于 2012-09-13T22:49:41.607 に答える