0

「/mnt/extsd」と呼ばれる外部SDカードと「/mnt/sdcard」と呼ばれるその内部ストレージがあるAndroidタブレットを持っています。

次のコードで「/mnt/sdcard」にフォルダーを作成しようとすると。アプリケーションはルートディレクトリにフォルダーを正常に作成しますが、「/mnt/extsd」にフォルダーを作成しようとすると、「開くことができませんでした: EACCESS (許可が拒否されました)」という例外が表示されます

    // create a File object for the parent directory
    File root_directory = new File("/mnt/extsd/abc/");
    // have the object build the directory structure, if needed.
    root_directory.mkdirs();
    // create a File object for the output file
    File outputFile = new File(root_directory, "abc_checking");
    // now attach the OutputStream to the file object, instead of a String representation
    try {
        FileOutputStream fos = new FileOutputStream(outputFile);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        Utility.showDialogue(getActivity(), e.getMessage() + "");
    }

マニフェスト

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

皆さんからの助けは非常に貴重です。助けてください...:(

4

1 に答える 1

2

Environment.getExternalStorageDirectory()を返す場合/mnt/sdcard/、それはアプリケーションで使用する必要がある外部ストレージです。デバイスには他のマウント ポイント (例: /mnt/extsd/) がある場合がありますが、それらは Android SDK の一部ではなく、多かれ少なかれ特定のデバイスに固有のものです。/mnt/extsd/通常の SDK アプリケーションから使用できる方法があるかどうか、デバイスの製造元に問い合わせる必要があります。

root アクセス権を持っている場合は、 のアクセス許可を変更することでこれを回避できる可能性がありますが、これ/mnt/extsd/は実際にはプログラミングのトピックではないため、StackOverflow の範囲を超えています。

于 2012-07-22T21:53:35.340 に答える