Редактировать: это была ошибка пользователя (извините). Я ответил на это ниже.
Я занимаюсь разработкой приложения, которому необходим доступ к данным на SD-карте. Когда я запускаю на своем устройстве разработки (odroid с Android 2.1), у меня есть root-доступ и я могу построить путь, используя:
File sdcard = Environment.getExternalStorageDirectory();
String path = sdcard.getAbsolutePath() + File.separator + "mydata"
File data = new File(path);
File[] files = data.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.toLowerCase().endsWith(".xyz");
}});
Однако, когда я устанавливаю это на телефон (2.1), где у меня нет доступа с правами root, я получаю файлы == null. Я предполагаю, что это потому, что у меня нет прав на чтение данных с SD-карты. Я также получаю файлы == null, когда просто пытаюсь перечислить файлы на / sdcard. То же самое относится и к моему построенному пути.
Кроме того, это приложение не предназначено для распространения через магазин приложений и должно использовать данные, скопированные отдельно на SD-карту, так что это реальный вариант использования. Это слишком много данных, чтобы положить в res / raw (я пытался, это не сработало).
Я также попытался добавить:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
в манифест, хотя я только хочу прочитать SD-карту, но это не помогло. Я не нашел тип разрешения для чтения хранилища.
Вероятно, есть правильный способ сделать это, но я не смог его найти. Любые советы будут полезны.