Я хотел бы прочитать XML-файл в своей деятельности, который я скопировал на SD-карту.
Если файл не существует, я считываю данные из строкового файла. Эта часть работает.
Я много пробовал и исследовал, но, к сожалению, ничего не добился. Может быть, у кого-нибудь есть подходящий совет?
Мой AndroidManifest.xml:
В файле MainActivity.java в разделе onCreate:
// first check for runtime permission
String permission = android.Manifest.permission.READ_EXTERNAL_STORAGE;
int grant = ContextCompat.checkSelfPermission(this, permission);
if (grant != PackageManager.PERMISSION_GRANTED) {
String[] permission_list = new String[1];
permission_list[0] = permission;
ActivityCompat.requestPermissions(this, permission_list, 1);
}else {
Log.v(TAG, "OnCreate(): grant is not READ_EXTERAL_STORAGE");
}
// Switch-Liste erstellen und an den View binden
createSwitchlList();
bindAdapterToListView();
В createSwitchList():
private void createSwitchlList() {
boolean fromFile = false;
Log.v(TAG, "createSwitchList() entered.");
//First check if the sd card is mounted or not
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
// sd card mounted
Log.v(TAG, "SD-CARD is available");
}
String myFile = new File(getExternalStorageDirectory() + File.separator + "MyWifiDemo" + File.separator + "switch.xml").toString();
if (myFile != null) {
Log.v(TAG, "Find path/file " + myFile);
fromFile = true;
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(myFile);
doc.getDocumentElement().normalize();
Log.v(TAG, "XML-root: " + doc.getDocumentElement().getNodeName());
} catch (RuntimeException e) {
Log.v(TAG, "Read-XML-Document RuntimeExeption: " + e);
fromFile = false;
} catch (Exception e) {
Log.v(TAG, "Read-XML-Document Exeption: " + e);
fromFile = false;
}
}
if (!fromFile) {
Log.v(TAG, "Path or file not found");
String[] geradeOn = getResources().getStringArray(R.array.gerade_an);
String[] geradeOff = getResources().getStringArray(R.array.gerade_aus);
String[] abzweigOn = getResources().getStringArray(R.array.abzweig_an);
String[] abzweigOff = getResources().getStringArray(R.array.abzweig_aus);
mSwitchListe.clear();
for (int i = 0; i < geradeOn.length; i++) {
Switch newSwitch = new Switch(getString(R.string.dcc_address) + (i + 1),
getString(R.string.dcc_status_gerade), geradeOn, geradeOff,
abzweigOn, abzweigOff);
mSwitchListe.add(newSwitch);
}
Toast.makeText(getApplicationContext(), "Acht Schalter erstellt, XML-Datei existiert nicht", Toast.LENGTH_SHORT).show();
Log.v(TAG, "*** Acht Schalter erstellt, XML-Datei existiert nicht");
}
}
А это мой журнал:
15:12:57.759 MainActivity de.dfwschmidts.mywifidemo V MainActivity Version 5.0.17
15:12:57.777 MainActivity de.dfwschmidts.mywifidemo V createSwitchList() entered.
15:12:57.780 MainActivity de.dfwschmidts.mywifidemo V SD-CARD is available
15:13:05.072 MainActivity de.dfwschmidts.mywifidemo V Find path/file /storage/emulated/0/MyWifiDemo/switch.xml
15:13:23.857 MainActivity de.dfwschmidts.mywifidemo V Read-XML-Document Exeption: java.net.MalformedURLException: no protocol: /storage/emulated/0/MyWifiDemo/switch.xml
15:13:28.351 MainActivity de.dfwschmidts.mywifidemo V Path or file not found
15:13:32.895 MainActivity de.dfwschmidts.mywifidemo V *** Acht Schalter erstellt, XML-Datei existiert nicht
15:13:32.905 MainActivity de.dfwschmidts.mywifidemo V 2. Stufe: onStart() betreten
15:13:32.911 MainActivity de.dfwschmidts.mywifidemo V 3. Stufe: onResume() betreten
15:13:33.293 MainActivity de.dfwschmidts.mywifidemo V 4. Stufe: onPause() betreten
15:13:33.309 MainActivity de.dfwschmidts.mywifidemo V onRequestPermissionsResult: READ_EXTERNAL_STORAGE permission not granted. Result: -1
15:13:33.310 MainActivity de.dfwschmidts.mywifidemo V 3. Stufe: onResume() betreten
15:13:40.663 MainActivity de.dfwschmidts.mywifidemo V 4. Stufe: onPause() betreten
15:13:41.077 MainActivity de.dfwschmidts.mywifidemo V 5. Stufe: onStop() betreten
15:13:41.085 MainActivity de.dfwschmidts.mywifidemo V --> Zustand speichern: onSaveInstanceState() betreten
15:13:44.884 MainActivity de.dfwschmidts.mywifidemo V 6. Stufe: onDestroy() betreten
Подробнее здесь: https://stackoverflow.com/questions/792 ... he-sd-card
Не могу найти или прочитать файл на SD-карте ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1733738159
Anonymous
Я хотел бы прочитать XML-файл в своей деятельности, который я скопировал на SD-карту.
Если файл не существует, я считываю данные из строкового файла. Эта часть работает.
Я много пробовал и исследовал, но, к сожалению, ничего не добился. Может быть, у кого-нибудь есть подходящий совет?
Мой AndroidManifest.xml:
В файле MainActivity.java в разделе onCreate:
// first check for runtime permission
String permission = android.Manifest.permission.READ_EXTERNAL_STORAGE;
int grant = ContextCompat.checkSelfPermission(this, permission);
if (grant != PackageManager.PERMISSION_GRANTED) {
String[] permission_list = new String[1];
permission_list[0] = permission;
ActivityCompat.requestPermissions(this, permission_list, 1);
}else {
Log.v(TAG, "OnCreate(): grant is not READ_EXTERAL_STORAGE");
}
// Switch-Liste erstellen und an den View binden
createSwitchlList();
bindAdapterToListView();
В createSwitchList():
private void createSwitchlList() {
boolean fromFile = false;
Log.v(TAG, "createSwitchList() entered.");
//First check if the sd card is mounted or not
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
// sd card mounted
Log.v(TAG, "SD-CARD is available");
}
String myFile = new File(getExternalStorageDirectory() + File.separator + "MyWifiDemo" + File.separator + "switch.xml").toString();
if (myFile != null) {
Log.v(TAG, "Find path/file " + myFile);
fromFile = true;
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(myFile);
doc.getDocumentElement().normalize();
Log.v(TAG, "XML-root: " + doc.getDocumentElement().getNodeName());
} catch (RuntimeException e) {
Log.v(TAG, "Read-XML-Document RuntimeExeption: " + e);
fromFile = false;
} catch (Exception e) {
Log.v(TAG, "Read-XML-Document Exeption: " + e);
fromFile = false;
}
}
if (!fromFile) {
Log.v(TAG, "Path or file not found");
String[] geradeOn = getResources().getStringArray(R.array.gerade_an);
String[] geradeOff = getResources().getStringArray(R.array.gerade_aus);
String[] abzweigOn = getResources().getStringArray(R.array.abzweig_an);
String[] abzweigOff = getResources().getStringArray(R.array.abzweig_aus);
mSwitchListe.clear();
for (int i = 0; i < geradeOn.length; i++) {
Switch newSwitch = new Switch(getString(R.string.dcc_address) + (i + 1),
getString(R.string.dcc_status_gerade), geradeOn[i], geradeOff[i],
abzweigOn[i], abzweigOff[i]);
mSwitchListe.add(newSwitch);
}
Toast.makeText(getApplicationContext(), "Acht Schalter erstellt, XML-Datei existiert nicht", Toast.LENGTH_SHORT).show();
Log.v(TAG, "*** Acht Schalter erstellt, XML-Datei existiert nicht");
}
}
А это мой журнал:
15:12:57.759 MainActivity de.dfwschmidts.mywifidemo V MainActivity Version 5.0.17
15:12:57.777 MainActivity de.dfwschmidts.mywifidemo V createSwitchList() entered.
15:12:57.780 MainActivity de.dfwschmidts.mywifidemo V SD-CARD is available
15:13:05.072 MainActivity de.dfwschmidts.mywifidemo V Find path/file /storage/emulated/0/MyWifiDemo/switch.xml
15:13:23.857 MainActivity de.dfwschmidts.mywifidemo V Read-XML-Document Exeption: java.net.MalformedURLException: no protocol: /storage/emulated/0/MyWifiDemo/switch.xml
15:13:28.351 MainActivity de.dfwschmidts.mywifidemo V Path or file not found
15:13:32.895 MainActivity de.dfwschmidts.mywifidemo V *** Acht Schalter erstellt, XML-Datei existiert nicht
15:13:32.905 MainActivity de.dfwschmidts.mywifidemo V 2. Stufe: onStart() betreten
15:13:32.911 MainActivity de.dfwschmidts.mywifidemo V 3. Stufe: onResume() betreten
15:13:33.293 MainActivity de.dfwschmidts.mywifidemo V 4. Stufe: onPause() betreten
15:13:33.309 MainActivity de.dfwschmidts.mywifidemo V onRequestPermissionsResult: READ_EXTERNAL_STORAGE permission not granted. Result: -1
15:13:33.310 MainActivity de.dfwschmidts.mywifidemo V 3. Stufe: onResume() betreten
15:13:40.663 MainActivity de.dfwschmidts.mywifidemo V 4. Stufe: onPause() betreten
15:13:41.077 MainActivity de.dfwschmidts.mywifidemo V 5. Stufe: onStop() betreten
15:13:41.085 MainActivity de.dfwschmidts.mywifidemo V --> Zustand speichern: onSaveInstanceState() betreten
15:13:44.884 MainActivity de.dfwschmidts.mywifidemo V 6. Stufe: onDestroy() betreten
Подробнее здесь: [url]https://stackoverflow.com/questions/79264527/cant-find-or-read-the-file-on-the-sd-card[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия