2015-10-20 1 views
0

première manière:Pourquoi les listes de photos qui ont été obtenues par ces deux manières sont différentes?

Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent , "select picture") , REQUEST_LOAD_IMAGE); 

seconde manière:

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(intent , REQUEST_LOAD_IMAGE); 

Après avoir entré l'activité de sélection d'image, les listes sont différentes. Pourriez-vous me dire la raison?

Si je veux lister toutes les photos sur mon téléphone android, comment dois-je faire? Merci

+1

Le premier dit "Je veux une photo". La seconde dit "Je veux quelque chose de cette collection spécifique de contenu". Toutes les images ne sont pas disponibles via MediaStore, en particulier celles gérées par d'autres applications et services de stockage en nuage (Dropbox, par exemple). – CommonsWare

Répondre

0

Si vous souhaitez que l'utilisateur choisisse un type basé sur le type MIME, utilisez ACTION_GET_CONTENT.

Si vous disposez d'une collection spécifique (identifiée par un Uri) que vous souhaitez sélectionner, utilisez ACTION_PICK. En cas d'égalité, passez à ACTION_GET_CONTENT en cas d'égalité. Alors que ACTION_PICK n'est pas formellement déconseillé, Dianne Hackborn recommends ACTION_GET_CONTENT.

tiré de la réponse here

de CommonsWare
0

Pour afficher la liste de toutes les photos, vous pouvez faire quelque chose comme ceci:

Supposons que vous avez un bouton et vous sélecteur d'image ouverte onClick,

int SELECT_FILE = 1; 
button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(
         Intent.ACTION_PICK, 
         android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       intent.setType("image/*"); 
       startActivityForResult(
         Intent.createChooser(intent, "Select File"), 
         SELECT_FILE); 
      } 
     }); 

Et Supposons que vous ayez une image dans laquelle vous affichez l'image sélectionnée, puis:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode == RESULT_OK) { 
      Uri selectedImageUri = data.getData(); 
      String[] projection = {MediaStore.MediaColumns.DATA}; 
      Cursor cursor = managedQuery(selectedImageUri, projection, null, null, 
        null); 
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
      cursor.moveToFirst(); 

      String selectedImagePath = cursor.getString(column_index); 
      Picasso.with(this) 
        .load(selectedImagePath) 
        .into(imageView); 
     } 
    }