2010-02-01 5 views

Répondre

42

Si vous avez un File, vous pouvez toujours le convertir en un URI:

File file = new File(path + File.pathSeparator + filename); 
URI uri = file.toURI(); 

Ou, si vous voulez utiliser la classe Android Uri:

Uri uri = Uri.fromFile(file); 
+0

Merci à vous. En fait, je cherche Uri pas URI, mais ils sont presque les mêmes, donc je peux trouver une solution. – skysign

+0

Ah, je ne savais pas que vous vouliez dire la classe Uri spécifique à Android. J'ai mis à jour ma réponse pour inclure cela aussi. –

+0

Merci pour la mise à jour de la réponse. – skysign

2

j'avais même question mon activité d'explorateur de fichiers ... mais vous devriez savoir que le contenturi pour le fichier ne supporte que les données mediastore comme image, audio et vidéo .... Je vous donne pour obtenir le contenu de l'image uri de sélectionner une image de sdcard .... essayez ce code ... peut-être que cela fonctionnera pour vous ...

public static Uri getImageContentUri(Context context, File imageFile) { 
     String filePath = imageFile.getAbsolutePath(); 
     Cursor cursor = context.getContentResolver().query(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
       new String[] { MediaStore.Images.Media._ID }, 
       MediaStore.Images.Media.DATA + "=? ", 
       new String[] { filePath }, null); 
     if (cursor != null && cursor.moveToFirst()) { 
      int id = cursor.getInt(cursor 
        .getColumnIndex(MediaStore.MediaColumns._ID)); 
      Uri baseUri = Uri.parse("content://media/external/images/media"); 
      return Uri.withAppendedPath(baseUri, "" + id); 
     } else { 
      if (imageFile.exists()) { 
       ContentValues values = new ContentValues(); 
       values.put(MediaStore.Images.Media.DATA, filePath); 
       return context.getContentResolver().insert(
         MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
      } else { 
       return null; 
      } 
     } 
    } 
Questions connexes