Запись во внутреннюю частную память в Android

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

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

, но я не могу заставить это работать на моем тестовом устройстве. Я также попытался создать файл, используя методы, доступные в java.io.File, с соответствующими методами. Я также пытался создать файл на SDCard с тем же результатом, не удалось. Я пробовал много решений, перечисленных в других ответах, точно следуя предложенному коду и инструкциям, и нашел тот же результат. Я начинаю чувствовать, что мне не хватает какого-то важного фрагмента кода или флага настройки, я установил разрешение в файле манифеста: был бы предложен здесь:

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

, но я не могу заставить это работать на моем тестовом устройстве. Я также попытался создать файл, используя методы, доступные в java.io.File, с соответствующими методами. Я также пытался создать файл на SDCard с тем же результатом, не удалось. Я пробовал много решений, перечисленных в других ответах, точно следуя предложенному коду и инструкциям, и нашел тот же результат. Я начинаю чувствовать, что мне не хватает какого-то важного фрагмента кода или где-то флага настройки, я установил разрешение в файле манифеста: был бы предложен здесь:

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

, но я не могу заставить это работать на моем тестовом устройстве. Я также попытался создать файл, используя методы, доступные в java.io.File, с соответствующими методами. Я также пытался создать файл на SDCard с тем же результатом, не удалось. Я пробовал много решений, перечисленных в других ответах, точно следуя предложенному коду и инструкциям, и нашел тот же результат. Я начинаю чувствовать, что мне не хватает какого-то важного фрагмента кода или где-то флага настройки, я установил разрешение в файле манифеста: Я также попытался создать файл, используя методы, доступные в java.io.File, с соответствующими методами. Я также пытался создать файл на SDCard с тем же результатом, не удалось. Я пробовал много решений, перечисленных в других ответах, точно следуя предложенному коду и инструкциям, и нашел тот же результат. Я начинаю чувствовать, что мне не хватает какого-то важного фрагмента кода или флага настройки, я установил разрешение в файле манифеста: Я также попытался создать файл, используя методы, доступные в java.io.File, с соответствующими методами. Я также пытался создать файл на SDCard с тем же результатом, не удалось. Я пробовал много решений, перечисленных в других ответах, точно следуя предложенному коду и инструкциям, и нашел тот же результат. Я начинаю чувствовать, что мне не хватает какого-то важного фрагмента кода или где-то флага настройки, я установил разрешение в файле манифеста:

  


Для ясности, я пытаюсь писать во внутреннюю частную память устройства. Это небольшой файл, содержащий имя, номер телефона и пару флагов типа int . Какой бы метод я ни использовал, я либо обнаруживаю, что файл не был создан (или изменяю, если помещаю файл вручную на SDCard), либо получаю исключение NullPointerException, когда пытаюсь сослаться на файл или расположение файла:

private              File   fILE = new File("Mydata", main.FILENAME);

или

private              File   fILE  = getDir("Mydata", 0);


Я запускаю код на HTC Hero, обновленный последним сервисным выпуском Sprint. Приветствуем любую помощь, заранее спасибо!

-Steve

Обновление (2/2/11): Используя EVO (API 8), я все равно получаю исключение NullPointerException. Код, генерирующий исключение, приведен ниже. Какие-либо мысли о том, почему мое приложение не может получить доступ к внутренней памяти? У меня есть эта проблема на трех разных физических устройствах, использующих два уровня API (API 7 и 8).

    File newfile = new File(this.getFilesDir() + "/data/files/", "sample.txt");

ОБНОВЛЕНИЕ 2: 2/4/11 - Я обнаружил, что не вижу файловую структуру на физическом устройстве (каталог данных) при любых обстоятельствах. У кого-нибудь есть мысли по этому поводу? Устройство правильно настроено и может запускать приложение из eclipse или adb.

ОБНОВЛЕНИЕ 3: (2/9/11) - Я думаю, что, возможно, обнаружил, в чем проблема, но я не уверен, как решить Это. Я выяснил, что права доступа к каталогу / data / на физических устройствах следующие: drwxrwx - x . Я не уверен, почему это так, может быть, что-то связано со Спринтом? Я нашел этот набор таким образом на HTC Hero, Samsung Epic (Galaxy S) и HTC EVO на Sprint. Проблема, похоже, в том, что DDMS и мое приложение не имеют доступа к каталогу для чтения / записи. Мне нужно выяснить 2 вещи здесь: почему это так и как решить эту проблему в дикой природе. Опять же, любая помощь здесь была бы УДИВИТЕЛЬНОЙ !!

ОБНОВЛЕНИЕ 4: Я думаю, что прошлый февраль был для меня полностью светлым моментом (см. ОБНОВЛЕНИЕ 3). Тестовые устройства, которые у меня есть, не имеют ROOT и, следовательно, не имеют доступа (DUH!). После всех обновлений, которые прошли SGS и EVO 4G, результат все тот же. Я все еще работаю над этой проблемой и постараюсь вернуться сюда с обновлением в ближайшее время (надеюсь, меньше чем через год в следующий раз).

12
задан nhaarman 22 August 2015 в 09:43
поделиться