0

外部ストレージのパブリックフォルダにある画像ファイルにアクセスしたいです。これが私のコードです:

    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
          java.io.File pictureDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
          ///storage/sdcard0/Pictures
          boolean canRead = pictureDir.canRead();
          //Above gives false
          java.io.File[] picFiles = pictureDir.listFiles();
          //null is returned for the file though I've atleast three picture files at this location
      }

public フォルダーへの正しいポインターが返されますが、canRead() メソッドは false を返します。Picture ディレクトリの下にあるファイルを一覧表示しようとすると、null が表示されます。

詳細が必要な場合はお知らせください。

[アップデート]

AndroidManifest.xml の権限

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

[更新 2] エミュレーターで正常に動作するため、これはデバイス固有の問題のようです。

4

2 に答える 2

1

「デバイス固有の」トラブルの別のポイントに耳を傾けています..読み取りのために外部ディレクトリにアクセスしようとしているZTE Valetがありますが、次のアクセス許可がgetExternalFilesDir( ) null を返す:

<uses-permission
    android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="18"
    />

上記のトリック (WRITE_EXTERNAL_STORAGE パーミッションを使用) により、確かに getExternalFilesDir() によって File が返されます... 奇妙です..とても奇妙です...

于 2015-12-29T21:22:29.640 に答える
0

AndroidManifest.xml で間違った権限を宣言しています。実際に外部ストレージを使用しています。API 16 から、外部ストレージを使用している場合に必要な新しいアクセス許可があります。

http://developer.android.com/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE

Android 4.1 以降を実行している場合は Android Emulator でアプリを実行するか、Android 4.1 以降を実行しているデバイスの設定アプリの [開発者向けオプション] で [USB ストレージの保護] を有効にすることで、権限を適用してアプリをテストできます。

おそらくお使いのデバイスで USB ストレージを保護するように設定されている可能性があります。そのような場合は、READ_EXTERNAL_STORAGE権限を使用する必要があります。ちなみにWRITE_EXTERNAL_STORAGEカバーしREAD_EXTERNAL_STORAGEます。

于 2013-04-21T18:55:31.603 に答える