2010-10-30 41 views
2

J'ai une application qui accepte les images de la galerie d'images (via le menu de partage). Mon application commence, et je fais ceci:Android: Partage de galerie d'images à l'application

Bundle bundle = getIntent().getExtras(); 
    Object obj = bundle.get("android.intent.extra.STREAM"); 

Bien que le débogage, Eclipse rapporte l'objet obj est de type « Uri @ StringUri » (???) et à l'intérieur est quelque part la chaîne « contenu: // media/external/images/media/992 '. Quelqu'un sait quel type d'objet obj est donc je peux le classer? Et quelle est la chaîne? IE, comment puis-je obtenir les données d'image?

Répondre

2

Il est de type Uri, un identificateur de ressource universel.

content://media/external/images/media/992 est l'URI de l'image. Pour le transformer en chemin de système de fichiers direct, passez l'URI à cette méthode que j'ai trouvée ailleurs sur ce site:

// Convert the image URI to the direct file system path of the image file 
public String getRealPathFromURI(Uri contentUri) { 

    String [] proj={MediaStore.Images.Media.DATA}; 
    Cursor cursor = managedQuery(contentUri, 
      proj, // Which columns to return 
      null,  // WHERE clause; which rows to return (all rows) 
      null,  // WHERE clause selection arguments (none) 
      null); // Order-by clause (ascending by name) 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 

    return cursor.getString(column_index); 
}