partage de l'image avec whatsapp sur android
J'ai l'image dans le dossier des ressources et de la nécessité de la partager avec whatsapp application
J'ai essayé ce code , elle continue de me donner le partage échoué essayer de nouveau ! quel est le problème ?!
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
share.setPackage("com.whatsapp");
// share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("file:///assets/epic/adv.png")));
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///assets/epic/adv.png"));
this.startActivity(Intent.createChooser(share, "share_via"));
OriginalL'auteur Shymaa Othman | 2014-07-15
Vous devez vous connecter pour publier un commentaire.
Vous avez plusieurs problèmes.
D'abord,
file:///assets/
n'est pas valideUri
sur n'importe quelle version d'Android. Votre propre application peut se référer à ses propres actifs parfile:///android_asset/
.Deuxième, seulement vous pouvez accéder à vos propres actifs par
file:///android_asset/
-- vous ne pouvez pas passer une telleUri
à des applications tierces. Copiez le fichier à partir d'actifs en interne, le stockage et l'utilisationFileProvider
, ou vous pouvez essayer monStreamProvider
et essayer de partager les données directement de laassets/
.Troisième, il n'y a aucune garantie que
com.whatsapp
existe sur l'appareil, ou quecom.whatsapp
soutiendraACTION_SEND
defile:///
Uri
valeurs avec un type MIMEimage/*
, et de sorte que vous peut se bloquer avec unActivityNotFoundException
.Quatrième, l'utilisateur peut partager cette image via d'autres moyens que WhatsApp. S'il vous plaît permettre à l'utilisateur de partager avec user veut, par la suppression de la
setPackage()
appel à partir de votreIntent
.Je ne recommande pas d'essayer de partager des ressources qui sont de configuration-dépendante (par exemple, un drawable qui varient en fonction de la densité). Comment
android.resource
poignées c'est sans-papiers, autant que je sache, et ce n'est pas comme les WhatsApp destinataire veut spécifiques drawable que l'expéditeur peut envoyer (par exemple, une faible résolution de l'image pour unldpi
oumdpi
de l'appareil). MonStreamProvider
prend en charge des ressources premières, et vous pouvez créer votre propreContentProvider
pour servir ce que vous voulez.FileProvider
ne pas servir de ressources à tous.Ainsi j'ai pu mettre l'image dans le dossier des actifs ou le drawable-nodpi si je le souhaite... Sont une de ces bonnes alternatives? Ce sujet de l'url (de quelque part sur Internet) ?
Sauf si vous avez besoin de l'image dans votre INTERFACE utilisateur, j'utiliserais
assets
. MonStreamProvider
prend en charge le service actif, ou vous pouvez créer unContentProvider
vous-même qui gère cela. "En ce qui concerne l'url (de quelque part sur Internet) ?" -- certaines applications peuvent soutenir cela, d'autres ne pourraient pas.file
avait été le plus sûr de régime, jusqu'à 7.0.ACTION_SEND
intervenants doit support au moinsfile
etcontent
. Si l'https
ouhttp
ouandroid.resource
varient. Malheureusement, nous ne filtre sur ce point, YMMV.Mon CWAC-bibliothèque Fournisseur est ici, avec des instructions et une démo app qui, entre autres choses, montre portion de l'actif. Vous verrez également qu'il est utilisé dans certains de mes livre des échantillons, tels que celui-ci pour les drag-and-drop.
OriginalL'auteur CommonsWare
Ce code pour partager l'image via whatsapp a bien fonctionné pour moi .
OriginalL'auteur Shymaa Othman
Cela a fonctionné pour moi
OriginalL'auteur Raunak Verma