2016-04-26 13 views
0

私はAndroidに非常に不満です。Androidパブリックムービーのディレクトリが空でないにもかかわらず、

私はEnvironment.DIRECTORY_MOVIESで定義されたディレクトリ内のファイルにアクセスしようとしている:

debug

あなたはそれがディレクトリで、パスが/storage/emulated/0/Moviesでデバッグ情報から見ることができるように。しかし、ファイルは含まれていません。

私はこの結果を得るディレクトリ内のファイルを一覧表示するadbのシェルを使用する場合:

adb shell output

だから、明らかに存在は、そのディレクトリ内のファイルです。私はそれがアクセス許可の問題かもしれないと思ったので、私は私のマニフェストにこれらを追加しました:同じ結果しかしそれでも

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

。私は間違って何をしていますか?

+1

「しかし、ファイルは含まれていません」 - これはどういう意味ですか? 'listFiles()'が誤った値を返しているということですか?デスクトップOSのファイルエクスプローラでこのディレクトリを見ると(USBケーブル経由でデバイスを接続した場合)、ファイルが表示されないことを意味しますか?他に何か意味がありますか? – CommonsWare

+0

'movieFolder.listFiles()'がnullを返すということです。 [ファイルのドキュメント](http://developer.android.com/reference/java/io/File.html#listFiles())によれば、 'movieFolder'がディレクトリではない場合にはそうするべきですが、それはそうです。 –

+0

さらに、ディレクトリにファイルがない場合、 'listFiles()'が 'null'または長さが0の配列を返すことを期待しています。 –

答えて

1

Android 6.0ランタイムの不承認の正確な影響はさまざまです。通常、あなたはSecurityExceptionを取得します。これは、何が起こっているのかをより明確に示しています。例外メッセージがあなたに欠けていることを伝えるからです。

この場合、明らかにJavaファイルI/OのものがSecurityExceptionを受け取るか、例外が発生しないため、listFiles()から奇妙な値が返されていました。

あなたのオプションは、targetSdkVersion 23以下に戻るか、または許可依頼ロジックを実装します(例:ActivityCompat.requestPermissions())。

関連する問題