web-dev-qa-db-fra.com

Partage d'URL vers Facebook, Twitter et email dans Android?

Existe-t-il quelque chose de similaire à getsharekit.com pour Android? Il permet de partager des URL avec des sites de réseaux sociaux. Y a-t-il quelque chose de semblable à cela ou dois-je coder séparément pour Facebook, Twitter et le courrier électronique?

28
sunil

Je ne sais pas si c'est ce que vous voulez dire, mais vous pouvez utiliser le menu de partage intégré à Android ...

Vous pouvez partager une URL vers Facebook, Twitter, Gmail et plus encore (tant que les applications sont installées sur votre appareil) en utilisant Intents:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT, "Sharing URL");
i.putExtra(Intent.EXTRA_TEXT, "http://www.url.com");
startActivity(Intent.createChooser(i, "Share URL"));

Si l'application que vous souhaitez partager n'est pas installée sur le périphérique de l'utilisateur, par exemple Facebook, vous devrez utiliser le kit de développement logiciel de Facebook.

Si vous souhaitez que votre activité traite également des données texte partagées à partir d'autres applications, vous pouvez ajouter ceci à votre fichier AndroidManifest.xml:

<activity Android:name=".ShareLink">
    <intent-filter>
        <action Android:name="Android.intent.action.SEND" />
        <category Android:name="Android.intent.category.DEFAULT" />
        <data Android:mimeType="text/plain" />
    </intent-filter>
</activity>

J'espère que cela t'aides!

67
Lior Iluz

Vous pouvez également utiliser la classe ShareCompat de la bibliothèque de support.

ShareCompat.IntentBuilder.from(activity)
    .setType("text/plain")
    .setChooserTitle("Share URL")
    .setText("http://www.url.com")
    .startChooser();

https://developer.Android.com/reference/Android/support/v4/app/ShareCompat.html

15
lukjar

Pour facebook, vous pouvez utiliser `

https://m.facebook.com/sharer.php?u=website_url&t=titleOfThePost

l’URL du site Web peut être n’importe quel élément faisant référence à une ressource, par exemple, si vous souhaitez obtenir une image à partir d’Internet et la partager sur votre mur.

espérons que cela aiderait

4

Tu peux essayer ça ...

private void shareTextUrl() {
        Intent share = new Intent(Android.content.Intent.ACTION_SEND);
        share.setType("text/plain");
        share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

        share.putExtra(Intent.EXTRA_SUBJECT, "Title Of The Post");
        share.putExtra(Intent.EXTRA_TEXT, "<source url>");

        startActivity(Intent.createChooser(share, "Share text to..."));
    }
2
Kshitij Jhangra

Voici ma mise en œuvre, vous pouvez ajouter d'autres applications si vous le souhaitez en ajoutant simplement les noms de packages. Ce code trie également les applications en fonction de leurs noms.

    List<Intent> targetShareIntents = new ArrayList<Intent>();
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    PackageManager pm = getActivity().getPackageManager();
    List<ResolveInfo> resInfos = pm.queryIntentActivities(shareIntent, 0);
    if (!resInfos.isEmpty()) {
        System.out.println("Have package");
        for (ResolveInfo resInfo : resInfos) {
            String packageName = resInfo.activityInfo.packageName;
            Log.i("Package Name", packageName);

            if (packageName.contains("com.Twitter.Android") || packageName.contains("com.facebook.katana")
                    || packageName.contains("com.whatsapp") || packageName.contains("com.google.Android.apps.plus")
                    || packageName.contains("com.google.Android.talk") || packageName.contains("com.slack")
                    || packageName.contains("com.google.Android.gm") || packageName.contains("com.facebook.orca")
                    || packageName.contains("com.yahoo.mobile") || packageName.contains("com.skype.raider")
                    || packageName.contains("com.Android.mms")|| packageName.contains("com.linkedin.Android")
                    || packageName.contains("com.google.Android.apps.messaging")) {
                Intent intent = new Intent();

                intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
                intent.putExtra("AppName", resInfo.loadLabel(pm).toString());
                intent.setAction(Intent.ACTION_SEND);
                intent.setType("text/plain");
                intent.putExtra(Intent.EXTRA_TEXT, "https://website.com/");
                intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_text));
                intent.setPackage(packageName);
                targetShareIntents.add(intent);
            }
        }
        if (!targetShareIntents.isEmpty()) {
            Collections.sort(targetShareIntents, new Comparator<Intent>() {
                @Override
                public int compare(Intent o1, Intent o2) {
                    return o1.getStringExtra("AppName").compareTo(o2.getStringExtra("AppName"));
                }
            });
            Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), "Select app to share");
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{}));
            startActivity(chooserIntent);
        } else {
            Toast.makeText(getActivity(), "No app to share.", Toast.LENGTH_LONG).show();
        }
    }
0
Oguz Ozcan