2013-04-15 2 views
2

J'ai créé une activité avec le type mime comme image ci-dessous.Obtention du chemin d'une image

<activity android:name=".xxxx"       
      android:launchMode="singleTop" 
      android:excludeFromRecents="true" 
      android:configChanges="orientation|screenSize|keyboardHidden" 
      android:theme="@style/AppTheme">       
      <intent-filter> 
       <action android:name="android.intent.action.SEND" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:host="xxxx.xxxx.net"></data> 
       <data android:mimeType="image/*" />    
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.CHOOSER" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:host="xxxx.xxxx.net"/> 
       <data android:mimeType="image/*" /> 
      </intent-filter> 
      </activity> 

maintenant lorsque l'utilisateur clique sur une photo et se dirige vers la galerie et ne partage mon application arrive là-bas et quand il clique dessus im capable de lancer l'activité ci-dessus ... Maintenant, ma question est de savoir comment obtenir le chemin de cette image?

+0

Vous voulez dire que vous voulez chemin de l'image de la galerie ?? ? – AndiM

+0

Pour cette question, il conviendrait de fournir le code du récepteur (et de celui associé) puisque vous dites que votre manifeste est correctement configuré. –

+0

yup quand l'activité est lancée j'ai besoin d'obtenir le chemin de cette image – user1340801

Répondre

0
protected void onActivityResult(int requestCode, int resultCode, 
     Intent resultData) { 
    super.onActivityResult(requestCode, resultCode, resultData); 

    Uri selectedImage = resultData.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 

      uploadImagePath = cursor.getString(columnIndex); 
      bitmapUploadImage = BitmapFactory.decodeFile(uploadImagePath); 
      profileImageView.setImageBitmap(bitmapUploadImage); 
      cursor.close(); 

} 
6

Cela vous donnera le chemin dans une instance Uri dans votre .xxxxActivity

Uri uri = (Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM); 

Ensuite, si vous avez besoin pour afficher l'image dans un ImageView, utilisez ceci:

imageView.setImageURI(uri); 

Code facultatif:

Si vous avez également besoin du chemin absolu de l'image sur l'appareil (je trouve cela une contrainte nécessaire quand je télécharger des images sur Twitter en utilisant l'API TwitPic), puis le code suivant vous donnera le chemin absolu de l'image sur l'appareil dans une instance File. Puisque ce bit n'est pas clair dans l'OP, j'ai pensé qu'un petit code supplémentaire ne ferait pas de mal. ;-)

// PASS THE URI INSTANCE FROM THE CODE ABOVE IN THE CONSTRUCTOR 
File file = new File(getRealPathFromURI(uri)); 

Et la méthode getRealPathFromURI(Uri uri):

public String getRealPathFromURI(Uri uri) { 
    Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
    return cursor.getString(idx); 
} 

Et pour définir l'image en utilisant l'instance de fichier du fichier:

imageView.setImageUri(Uri.fromFile(file)); 
+1

A fait le tour pour moi. Pourquoi est-ce si compliqué? – anderspitman

Questions connexes