2016-04-20 9 views
0

Ich versuche, den vollständigen Pfad einer Datei mit ich abholen mit Android-Browser zu erhalten. Daher verwende ich den folgenden Code:Ich kann nicht tatsächlichen Pfad Android-Datei

private void showFileChooser() { 
     Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
     intent.setType("*/*"); 
     intent.addCategory(Intent.CATEGORY_OPENABLE); 

     try { 
      startActivityForResult(
        Intent.createChooser(intent, "Select a file"), FILE_SELECT_CODE); 
     } catch (android.content.ActivityNotFoundException ex) { 
      Toast.makeText(this, "You don't have a browser installed", Toast.LENGTH_SHORT).show(); 
     } 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(requestCode==FILE_SELECT_CODE && resultCode==Activity.RESULT_OK) { 

        // Get the Uri of the selected file 
        Uri uri = data.getData(); 
        Log.d(TAG, "URI del archivo a enviar: " + uri.toString()); 
        // Get the path 
        final String path=Environment.getExternalStorageDirectory().toString()+uri.getPath(); 
        Log.d(TAG, "Path del archivo a enviar: " +path); 
        File archivoPruebaParaSaberSiExiste = new File(path); 


        if(archivoPruebaParaSaberSiExiste.exists()) { 
         Log.d(TAG,"File exists"); 
        else{ 
         Log.d(TAG,"File does not exist"); 
        } 

     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 


<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

jedoch dont i den Dateipfad erhalten:

The file path which i get is: 
     /storage/emulated/0/data/external/images/media/1949 

The actual path is: 
    /storage/emulated/0/DCIM/Camera/20165481_133918.jpg 

Ich weiß nicht, was geschieht.

Antwort

0

Ich versuche, den vollständigen Pfad einer Datei zu erhalten, indem ich mit Android-Browser abholen.

Sie wählen keine Datei aus. Sie wählen ein Stück Inhalt. Es ist nicht erforderlich, dass dies eine Datei ist.

jedoch dont ich die Pfaddatei erhalten

Auch hier hat der gewählte Inhalt muss nicht eine Datei sein.

Basierend auf Ihrem Ergebnis ist das Schema Ihrer Uricontent, nicht file. Dies ist völlig normal und wird in Zukunft die dominierende Form von Uri sein. Verwenden Sie consume a contentUri eine ContentResolver und Methoden wie openInputStream().

+0

Vielen Dank, es war Sohn hilfreich! –

Verwandte Themen