2017-10-01 3 views
1

Voici comment j'ouvre galeriachemin réel Obtenir l'image de galeria utilisant Android api 23 sur émulateur Nexus

Intent intent = new Intent(); 
       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 
       startActivityForResult(Intent.createChooser(intent, "Select Picture"),1); 

Ceci est mon onActvitityResult

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == RESULT_OK) { 
      if (requestCode == 1) { 
       Uri selectedImageUri = data.getData(); 
       selectedImagePath = getPath(selectedImageUri); 
       Disc.setText(selectedImagePath); 
      } 
     } 
    } 

Voici comment im essayant d'obtenir le chemin réel de gallary mais son retour rien, String son retour est vide.

private String getPath(Uri uri) { 
     // just some safety built in 
     if(uri == null) { 
      Toast.makeText(this, "Error problem with system", Toast.LENGTH_SHORT).show(); 
      return null; 
     } 
     String path = "No-Path-Found"; 
     // try to retrieve the image from the media store first 
     // this will only work for images selected from gallery 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = getContentResolver().query(uri, projection, null, null, null); 
     if(cursor.moveToFirst()){ 
      int column_index = cursor 
        .getColumnIndex(MediaStore.Images.Media.DATA); 
      path = cursor.getString(column_index); 
     } 
      cursor.close(); 
      return path; 
    } 

Quelqu'un peut-il me aider, je cherchais en ligne, mais rien ne fonctionne

+0

afin d'obtenir le droit d'Uri vous pouvez utiliser ceci: [obtenir le chemin réel URI de fichier ] (https://stackoverflow.com/questions/42110882/get-real-path-from-uri-of-file-in-sdcard-marshmallow) – Hooman

Répondre

0

a découvert que vous devez utiliser pour l'exécution permision Android api 19 et au-dessus, il fonctionne parfaitement maintenant :)

0

A Uri is not a file. Il n'y a aucune exigence que ACTION_GET_CONTENT vous renvoie un Uri qui est de MediaStore. Il n'est pas nécessaire que ACTION_GET_CONTENT vous renvoie un Uri qui pointe vers un fichier.

Supprimez la méthode getPath(). Utilisez un ContentResolver et openInputStream() pour lire dans le contenu identifié par le Uri.

+0

Comment faire cela? Im assez perdu – SpriteAndDreams

+0

@SpriteAndDreams: Appel 'getContentResolver()' sur un 'Context', comme un' Activity' ou 'Service'. Appelez 'openInputStream()' sur 'ContentResolver', en passant dans' Uri'. Cela renvoie un 'InputStream', que vous utilisez avec les E/S Java standard pour lire dans les octets. Ou, en fonction de ce que vous faites globalement, vous pourriez simplement remettre le 'Uri' à une bibliothèque (par exemple, Glide ou Picasso pour le chargement des images). – CommonsWare