2016-07-07 4 views
0

In meiner app der Benutzer eine XML-Datei über eine Absicht zur Auswahl:Android erstellen String von XML-Dateipfad

Auswahl:

Intent chooseFileXML = new Intent(Intent.ACTION_GET_CONTENT); 
chooseFileXML.setType("text/xml"); 
Intent intentXML = Intent.createChooser(chooseFileXML, getString(R.string.importXMLDatei)); 
startActivityForResult(intentXML, REQUEST_CODE_IMPORT_XML_FILE); 

Empfangen:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     switch (requestCode){ 
      case REQUEST_CODE_IMPORT_XML_FILE: 
       if(resultCode == RESULT_OK){ 
        Uri uri = data.getData(); 
        String filePath = uri.getPath(); 
        File fl = new File(filePath); 
        //Get xml-code from file and put it in a String 
        FileInputStream fin = null; 
        try { 
        fin = new FileInputStream(fl); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(fin)); 
        StringBuilder sb = new StringBuilder(); 
        String line; 
        while ((line = reader.readLine()) != null) { 
         sb.append(line).append("\n"); 
        } 
        reader.close(); 
        System.out.println(sb.toString()); 

        fin.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
      break; 
     } 
    } 

Ich erhalte den korrekten Dateipfad. Aber in dieser Zeile: fin = new FileInputStream (fl); ich diesen Fehler:

java.io.FileNotFoundException: /document/primary:Android/data/com.oli.myapp/Files/test.xml: öffnen, ist fehlgeschlagen: ENOENT (Keine solche Datei oder das Verzeichnis)

Antwort

0

Eigentlich Problem in Dateipfad wird .your Dateipfad so nicht vaild realen Weg der Datei durch

String filePath = getRealPathFromURI(uri); 

getRealPathFromURI Methoden

private String getRealPathFromURI(Uri contentUri) { 
String[] proj = { MediaStore.Images.Media.DATA }; 
CursorLoader loader = new CursorLoader(mContext, contentUri, proj, null, null, null); 
Cursor cursor = loader.loadInBackground(); 
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
cursor.moveToFirst(); 
String result = cursor.getString(column_index); 
cursor.close(); 
return result; 
} 
+0

verursacht finden: java.lang.NullPointer Ausnahme: Versuch, die virtuelle Methode 'char [] java.lang.String.toCharArray()' für einen Null-Objektverweis – XxGoliathusxX

+0

aufzurufen, in dem Sie char-Code verwenden? – sasikumar

+0

Nirgendwo: Es zeigt den Fehler in dieser Zeile: Datei fl = neue Datei (realPath); – XxGoliathusxX