2016-08-18 4 views
0
lesen

Ich möchte ein Fileinputstream von uri lesen, aber es ist eine Datei nicht gefunden AusnahmeDatei nicht Ausnahme gefunden, wenn sie versuchen von uri in Android

dies mein Code so weit zurückkehrt:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("*/*"); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 

    try { 
     startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), FILE_SELECT_CODE); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(getContext(), "Please install a File Manager.", Toast.LENGTH_SHORT).show(); 
    } 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case FILE_SELECT_CODE: 
      if (resultCode == RESULT_OK) { 
       // Get the Uri of the selected file 
       Uri fileUri = data.getData(); 
       long size = Helper.GetFileSize(getActivity(),fileUri); 
       File F = new File(fileUri.getPath()); 
       Log.d("File", "File Uri: " + fileUri.toString()); 
       FileInputStream fis; 
       try { 
        fis = new FileInputStream(new File(F.getPath())); 
       } 
       catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 
      break; 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 
+0

Sind Sie versuchen, es aus der Galerie zu laden? – sumandas

+0

ja ich versuche, es aus der Galerie zu laden – Sora

+0

Ich habe meine Frage aktualisiert – Sora

Antwort

1

das Problem ist der Pfad enthält Inhalt: // .... während Datei eine tatsächliche filePath haben muss

Try dieses Bit in dem Code-snippet zu aktualisieren:

Uri fileUri = data.getData(); 
String filePath = getPathFromUri(this,fileUri); 
long size = Helper.GetFileSize(getActivity(),filePath); 
File F = new File(filePath); 

und dies ist die Methode zu helfen

public String getPathFromURI(Context context, Uri contentUri) { 
    Cursor mediaCursor = null; 
    try { 
      String[] dataPath = { MediaStore.Images.Media.DATA }; 
      mediaCursor = context.getContentResolver().query(contentUri, dataPath, null, null, null); 
      int column_index = mediaCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      mediaCursor.moveToFirst(); 
      return mediaCursor.getString(column_index); 
    } finally { 
     if (mediaCursor != null) { 
      mediaCursor.close(); 
     } 
    } 
} 
+0

GetPathFromUri gibt immer null zurück, ich denke, vielleicht aus dem 'dataPath' bin ich mir nicht sicher warum .please help – Sora

+0

ahh, kannst du bitte den Wert einfügen, der contentUri zugewiesen ist? – sumandas

+1

Ich habe das Problem gestern behoben, ich habe eine Klasse gefunden, die alle Arten von URLs behandelt "https: // github.com/iPaulPro/aFileChooser" – Sora

Verwandte Themen