Android: l'Obtention de l'image bitmap à partir d'application tierce (par exemple, WhatsApp) par l'intermédiaire de contenus:// URI

Je suis en train d'essayer d'obtenir de l'image à partir de l'application tierce (e.g WhatsApp) de mon application (en cours de test sur de la Guimauve). Quand je fais "partager l'image" à partir de WhatsApp et de le partager avec mon application, j'obtiens URI quelque chose comme ceci:

content://com.whatsapp.provider.media/item/61025

Mais dans mon application quand je l'appelle getContentResolver().openInputStream(uri) ou getContentResolver().openFileDescriptor(uri, "r") avec au-dessus d'URI, il se bloque à l'exception:

java.lang.SecurityException: Autorisation de Déni: ouverture fournisseur
com.whatsapp.MediaProvider de ProcessRecord{a4b804a
30321:com.myapp/u0a145} (pid=30321, uid=10145) qui n'est pas exporté
de l'uid 10083

Ce que j'ai essayé jusqu'à présent

J'ai regardé pour cette exception sur DONC et trouvé question similaire posé mais pour importer des images à partir de Google, les Photos et les eu qui ont besoin d'ajouter la permission comme:

<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>

Mais pas convienced avec cela, car il pourrait y avoir de nombreuses applications, et de la nécessité d'ajouter la permission pour chacun d'eux, ou quoi.

Dans certains autres réponses il a été suggéré de lire/copier les données de fournisseur de contenu immédiatement. Mais vous ne savez pas comment. Parce que je suis une exception dans openInputStream lui-même.

Je dois aussi mentionner que WhatsApp image peut être partagé avec succès avec d'autres applications (par exemple Google Drive) donc il doit y avoir un moyen de le faire.

Il vous plaît quelqu'un peut donner à partager des notes ou de solution de travail à ce sujet?

Avez-vous la permission de lire à partir du stockage externe et vérifié au cours de l'exécution?
le fait que le fournisseur n'est pas exporté, seulement certains sous-ensemble limité de paquets peut y accéder (comme google drive), mais votre application n'est pas autorisé à le faire
oui, j'ai la permission
Si c'est le cas, quels seraient les critères. Parce que j'ai essayé avec une autre non Google apps (par exemple, un éditeur d'image app InShot, transfert de Fichiers, Xender) et il travaille avec eux. De toute façon, c'est que documenté nulle part merci de partager le lien. Merci.
Poste le code que vous avez essayé manifeste. Ce problème se produit alors que le partage de WhatsApp seulement ou à partir d'autres applications? Ce sujet à partir de la galerie?

OriginalL'auteur Atul | 2017-10-05