91 votes

Ouvrir une image à l'aide d'un URI dans la visionneuse d'images de la galerie par défaut d'Android

J'ai extrait l'uri de l'image, maintenant je voudrais ouvrir l'image avec le visualisateur d'image par défaut d'Android. Ou mieux encore, l'utilisateur pourrait choisir le programme à utiliser pour ouvrir l'image. Quelque chose comme les explorateurs de fichiers vous proposent si vous essayez d'ouvrir un fichier.

2voto

creativecoder Points 307

Ma solution utilisant le File Provider

    private void viewGallery(File file) {

 Uri mImageCaptureUri = FileProvider.getUriForFile(
  mContext,
  mContext.getApplicationContext()
  .getPackageName() + ".provider", file);

 Intent view = new Intent();
 view.setAction(Intent.ACTION_VIEW);
 view.setData(mImageCaptureUri);
 List < ResolveInfo > resInfoList =
  mContext.getPackageManager()
  .queryIntentActivities(view, PackageManager.MATCH_DEFAULT_ONLY);
 for (ResolveInfo resolveInfo: resInfoList) {
  String packageName = resolveInfo.activityInfo.packageName;
  mContext.grantUriPermission(packageName, mImageCaptureUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
 }
 view.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
 Intent intent = new Intent();
 intent.setAction(Intent.ACTION_VIEW);
 intent.setDataAndType(mImageCaptureUri, "image/*");
 mContext.startActivity(intent);
}

0voto

André Herculano Points 676

Il existe un bel exemple sur ce site web : Android-using-intents-open-files

J'espère que cela vous aidera :)

0voto

TeeTracker Points 692

Presque NON Vous n'avez aucune chance d'utiliser une application de photo ou de galerie (il en existe peut-être une), mais vous pouvez essayer le visualisateur de contenu.

Veuillez consulter une autre réponse à une question similaire aquí

0voto

knightcube Points 51

Ma solution

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory().getPath()+"/your_app_folder/"+"your_picture_saved_name"+".png")), "image/*");
context.startActivity(intent);

0voto

Ahmet Points 266

L'uri doit être l'uri du contenu et non l'uri du fichier, Vous pouvez obtenir contentUri par FileProvider de la manière suivante

Uri contentUri = FileProvider.getUriForFile(getContext(),"com.github.myApp",curFile);

N'oubliez pas d'ajouter le fournisseur dans le fichier Manifest.

<provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.github.myApp"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
</provider>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X