Я новичок в разработке Android.
Мне нужно прочитать текстовый файл с SD-карты и отобразить этот текстовый файл. Есть ли способ просмотреть текстовый файл непосредственно в Android или как я могу прочитать и отобразить содержимое текстового файла?
Я новичок в разработке Android.
Мне нужно прочитать текстовый файл с SD-карты и отобразить этот текстовый файл. Есть ли способ просмотреть текстовый файл непосредственно в Android или как я могу прочитать и отобразить содержимое текстового файла?
В вашем макете вам нужно что-то отображать текст. TextView
— очевидный выбор. Итак, у вас будет что-то вроде этого:
<TextView
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
И ваш код будет выглядеть так:
//Find the directory for the SD Card using the API
//*Don't* hardcode "/sdcard"
File sdcard = Environment.getExternalStorageDirectory();
//Get the text file
File file = new File(sdcard,"file.txt");
//Read text from file
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close();
}
catch (IOException e) {
//You'll need to add proper error handling here
}
//Find the view by its id
TextView tv = (TextView)findViewById(R.id.text_view);
//Set the text
tv.setText(text);
Это может быть в методе onCreate()
вашего Activity
или где-то еще, в зависимости от того, что вы хотите сделать.
READ_EXTERNAL_STORAGE
в файле манифеста.
- person Houcine; 15.03.2013
В ответ на
Не хардкодить /sdcard/
Иногда мы ДОЛЖНЫ жестко запрограммировать его, так как в некоторых моделях телефонов метод API возвращает внутреннюю память телефона.
Известные типы: HTC One X и Samsung S3.
Environment.getExternalStorageDirectory().getAbsolutePath() дает другой путь - Android
У вас должно быть разрешение READ_EXTERNAL_STORAGE для чтения SD-карты. Добавить разрешение в manifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Начиная с Android 6.0 или выше, ваше приложение должно запрашивать у пользователя предоставление опасных разрешений во время выполнения. Перейдите по этой ссылке Обзор разрешений
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
}
}
Осторожно: в некоторых телефонах есть 2 SD-карты, внутренняя фиксированная и съемная карта. Вы можете найти имя последнего через стандартное приложение: «Mijn Bestanden» (по-английски: «MyFiles»?). Когда я открываю это приложение (элемент: все файлы), путь к открытой папке «/sdcard», при прокрутке вниз есть запись «external-sd», при нажатии на которую открывается папка «/sdcard/external_sd/». Предположим, я хочу открыть текстовый файл «MyBooks.txt», я бы использовал что-то вроде:
String Filename = "/mnt/sdcard/external_sd/MyBooks.txt" ;
File file = new File(fname);...etc...