Почему не создается моя корневая папка? - PullRequest
0 голосов
/ 17 августа 2011

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

Я использую Atrix (у него есть внутреннее хранилище и нет SD-карты). Я также попытался загрузить Atrix Addon для Gingerbread и попытался скомпилировать его в эмуляторе, и программа вылетала. (Но он отлично работает в реальном устройстве.)

  1. Почему происходит сбой эмулятора (у меня в эмуляторе 1 ГБ SD-карта)? (Происходит сбой с исключением нулевого указателя)

  2. почему папка не создается на реальном устройстве?

Конфигурации устройства:

MinSDK - 8 Версия SDK - 10

Фрагмент кода

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ixfer_main);

        File rootDirectory = new File(getExternalFilesDir(null),"/AppRoot");
        rootDirectory.mkdirs(); // also tried using mkdir() - still no good

РЕДАКТИРОВАТЬ: Это была проблема с разрешениями. Исправлено и работает сейчас.

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

Ответы [ 2 ]

1 голос
/ 17 августа 2011

для завершения предыдущего ответа:

не забудьте проверить состояние внешнего хранилища, прежде чем что-либо делать с ним.

  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
  /* do job on external storage */
  }
0 голосов
/ 17 августа 2011

Чтобы получить доступ к файловой системе, вам необходимо добавить соответствующее разрешение в ваш XML-файл манифеста Android.Без соответствующих разрешений ваш файловый объект не будет создан, и вы получите нулевую ссылку.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.app.myapp" >
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>
...