Я пытаюсь сохранить некоторые данные из своего приложения в простом текстовом файле на внутренней частной области хранения (предпочтения пользователя). Я прочитал много вопросов здесь (StackOverflow) и пробовал предлагаемые решения без каких-либо успехов. Самое простое решение, похоже, было бы здесь:
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
но я не могу заставить это работать на моем тестовом устройстве. Я также попытался создать файл, используя методы, доступные в java.io.File, с помощью соответствующих методов. Я также попытался создать файл на SDCard с тем же результатом, сбой. Я попробовал множество решений, перечисленных в других ответах, следуя точно указанному коду и инструкциям и обнаружив тот же результат. Я начинаю чувствовать, что мне не хватает какой-то важный кусок кода, или флаг установки где-то, я поставил разрешение в файле манифеста:
Запись на внутреннем частном хранилище в Android
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Чтобы было ясно, Я пытаюсь написать во внутреннее частное хранилище устройства. Это небольшой файл, содержащий имя, номер телефона и пару флагов типа int
. Какой бы метод я ни использовал, я либо обнаружил, что файл не создавал (или менял, если я размещаю файл вручную на SDCard), либо получаю исключение NullPointerException при попытке ссылаться на файл или файл:
private File fILE = new File("Mydata", main.FILENAME);
или
private File fILE = getDir("Mydata", 0);
Я бегу код на HTC Hero, обновленный с последней версией службы от Sprint. Любая помощь была бы ВЕЛИКОЙ оценкой, спасибо заранее!
-Стив
Update (2/2/11): Использование EVO (API 8) Я все еще получаю NullPointerException. Ниже приведен код, генерирующий исключение, любые мысли о том, почему мое приложение не может получить доступ к внутреннему хранилищу? У меня есть эта проблема на трех разных физических устройствах, использующих два уровня API (API 7 и 8).
File newfile = new File(this.getFilesDir() + "/data/files/", "sample.txt");
UPDATE 2: 2/4/11 - я обнаружил, что я не могу увидеть структуру файлов на физическом устройстве (каталог данных) при любых обстоятельствах. У кого-нибудь есть мысли по этому поводу? Устройство настроено правильно и может запускать приложение из eclipse или adb.
ОБНОВЛЕНИЕ 3: (2/9/11) - Я думаю, что, возможно, я нашел проблему, но я не уверен, как с этим бороться. Я выяснил, что разрешения на каталог/data/на физических устройствах: drwxrwx--x
. Я не уверен, почему так происходит, может быть, с Sprint? Я нашел этот набор таким образом на HTC Hero, Samsung Epic (Galaxy S) и HTC EVO на Sprint. Проблема заключается в том, что DDMS и мое приложение не имеют доступа к директории. Мне нужно выяснить здесь 2 вещи, почему это так и как закончить эту проблему в дикой природе. Опять же, любая помощь здесь была бы УДИВИТЕЛЬНОЙ!
ОБНОВЛЕНИЕ 4: Я думаю, что в прошлом феврале для меня был полный светлый момент (см. ОБНОВЛЕНИЕ 3). У тестируемых устройств, которые у меня нет, нет ROOTed и, следовательно, нет доступа (DUH!). После всех обновлений, которые он провела с SGS и EVO 4G, результат все тот же. Я все еще работаю над этой проблемой и попытаюсь вернуться сюда с обновлением в ближайшее время (надеюсь, менее года в следующий раз).
Получаете ли вы сообщение об ошибке при попытке использовать эти различные методы или просто просто терпят неудачу? –
Я сосредоточен на 'openFileOutput()' прямо сейчас, и я получаю исключение NullPointerException. Кажется, что личный каталог данных на телефоне заблокирован по какой-то причине, я даже не могу посмотреть на каталог; его вроде ничего не создает. Разрешения в каталоге «data» на телефоне: «drwxrwx - x».Я начинаю задаваться вопросом, существует ли неверная настройка на телефоне или что-то в этом роде. Требование к приложению заключается в том, что файл данных записывается во внутреннее хранилище для обеспечения совместимости. – Kingsolmn
, вы не сможете получить доступ к каталогу/данных на физическом устройстве с помощью DDMS, если у вас нет доступа root, но вы все равно сможете писать в файл из своего приложения. что происходит на эмуляторе? можете ли вы написать файл в порядке? – techiServices