Autore Topic: Creare un oggetto File da un Uri di tipo "content://"  (Letto 631 volte)

Offline ciccio

  • Utente junior
  • **
  • Post: 65
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Francesco Cervone
  • Sistema operativo:
    Mac OS X 10.9
Creare un oggetto File da un Uri di tipo "content://"
« il: 05 Marzo 2014, 15:41:31 CET »
0
Salve a tutti. Mi trovo su Android KitKat 4.4 e dopo aver prelevato un immagine dalla galleria mi viene restituito un Uri del tipo "content://blablabla". Avrei bisogno di ottenere l'oggetto della classe java.io.File a partire da questo Uri. Conoscete un modo per farlo?
Grazie

Offline durykilller

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Sony Xperia Go
  • Sistema operativo:
    Windows 8.1, Ubuntu 12
Re:Creare un oggetto File da un Uri di tipo "content://"
« Risposta #1 il: 13 Marzo 2014, 19:49:50 CET »
0
Io ho lo stesso problema: vorrei selezionare un file audio presente sulla sd e passare il percorso assoluto ad un'altra activity. Su kitkat utilizzo il nuovo StorageAcces lanciando l'intent:
Codice (Java): [Seleziona]
int REQUEST_BROWSE_AUDIO=100;
Intent intent=new Intent(Intent.ACTION_OPEN_DOCUMENT);
 intent.addCategory(Intent.CATEGORY_OPENABLE);
 intent.setType("audio/*");
 activity.startActivityForResult(intent, REQUEST_BROWSE_AUDIO);
prima di kitkat facevo così
Codice (Java): [Seleziona]
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            else if (requestCode == REQUEST_BROWSE_AUDIO) {
                if (data != null) {
                    Uri uri = data.getData();
                    if (uri != null) {
                        if (uri.getScheme().equals("content")) {
                                                        String[] filePathColumn = {MediaStore.MediaColumns.DATA};
                                                        Cursor cursor;
                                                        try {
                                                                cursor = callerContext.getContentResolver().query(uri, filePathColumn, null, null, null);
                                                        }catch (final Exception e) {
                                                                Log.d(TAG,"Uri not resolvable");
                                                        }
                                                        cursor.moveToFirst();
                                                        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                                                        filePath = cursor.getString(columnIndex);
                                                        cursor.close();
                                                }
                                        }
                                }
            }    
                }
        }
ma su kitkat il risultato è sempre null

il nuovo intent ritorna un Uri così:
content://com.android.externalstorage.documents/document/6135-3636%3Asuonerie_sveglia_militare-1.mp3

il file si trova in /storage/sdcard1
ma come faccio trasformare l'Uri nel suo percorso assoluto?