Не могу найти или прочитать файл на SD-картеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Не могу найти или прочитать файл на SD-карте

Сообщение 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, 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»