Проблема в создании временного файла в android?

В моем приложении MediaPlayer для потоковой передачи видео я использую следующий код

File temp = File.createTempFile("mediaplayertmp", "dat");

при запуске он генерирует исключения, например

Parent directory of file in not 
writable:/sdcard/
mediaplayertmp43912.dat

Я не разбираюсь в этой проблеме, и я хочу знать, что когда мы выполняем этот код, это означает, что файл будет создан. Любой знает, что решение означает, пожалуйста, помогите с некоторым кодом.

Ответ 1

Разрешено ли ваше разрешение на запись на SD-карту в манифесте андроида?

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

Ответ 2

Я не уверен, что вы хотите сделать... если каталог не доступен для записи, он не доступен для записи. Выбросьте ошибку, чтобы пользователь сообщил им, что их SDCard требует разрешения на запись (возможно, с инструкциями по исправлению).

В нескольких приложениях у меня есть код, похожий на подобный, чтобы убедиться, что есть SDCard... не должно быть трудно изменить его, чтобы убедиться, что он также доступен для записи:

// make sure we have a mounted SDCard
if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
    // they don't have an SDCard, give them an error message and quit
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(R.string.welcome_dialog_sdcard_error)
        .setCancelable(false)
        .setPositiveButton(R.string.welcome_dialog_sdcard_ok, new DialogInterface.OnClickListener() {
            public void onClick(final DialogInterface dialog, final int id) {
                finish();
            }
        });
    final AlertDialog alert = builder.create();
    alert.show();
} else {
    // there an SDCard available, continue
}

Ответ 3

У меня была такая же проблема. Мое приложение отлично работало, пока я не обновил SDK. Теперь для этого требуется разрешение WRITE_EXTERNAL_STORAGE для записи на SD-карту.

Ответ 4

Код работает как есть в Android 1.5 или ранее. Что-нибудь более новое требует, чтобы приложение специально запрашивало разрешение WRITE_EXTERNAL_STORAGE в своем манифесте.