0

私のアプリケーションでは、以下のコードを使用してMovies、ストレージ内のフォルダー内の映画を一覧表示します。しかし、Nexus 7 タブレットを Android 4.4 にアップグレードしたため、このコードは機能しません (コードの最後のトーストがポップアップ表示され、コードがそのフォルダー内にファイルを見つけられなかったことを意味します。そのフォルダーにアクセスできるかどうかさえわかりません)。 )。新しい更新で何を変更する必要があるか、または何が変更されているか考えていますか?

    private void populateSpinners() {

        Boolean foundVideoFiles;

        // videos spinner
        File videoFolder =
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
                        .getAbsoluteFile();

        if (videoFolder.listFiles() != null) {
            foundVideoFiles = true; //found some files
            ArrayAdapter<File> movieAdapter = new ArrayAdapter<File>(this,
                    android.R.layout.simple_spinner_dropdown_item, videoFolder.listFiles());
            _spinner_videos.setAdapter(movieAdapter);

            //Restore perviously selected video
            int spinnerValue = _preferences.getInt("spinner_videos", -1);
            if (spinnerValue != -1) {
                _spinner_videos.setSelection(spinnerValue);
            }
        } else {
            foundVideoFiles = false;
        }

        //Error handling
        if (foundVideoFiles == false) {
            Toast.makeText(this, "ERROR: NO MOVIES WERE FOUND IN" + videoFolder, Toast.LENGTH_LONG).show();
        }
}

タブレットのGalleryアプリを使えばそちらで動画が見られるので、アップデートで動画が消えたことはありません。

4

1 に答える 1

5

Android 4.4 の時点で ( Android 4.4 の重要な動作の変更に従って:

アプリにREAD_EXTERNAL_STORAGE権限がない限り、Android 4.4 で実行している場合、アプリは外部ストレージの共有ファイルを読み取ることができません。つまり、getExternalStoragePublicDirectory()によって返されたディレクトリ内のファイルは、許可なしではアクセスできなくなります。

その許可をマニフェストに必ず追加してください。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
于 2013-11-23T21:32:39.000 に答える