it-swarm.com.de

URL für Facebook, Twitter und E-Mail in Android freigeben?

Gibt es etwas Ähnliches wie getsharekit.com für Android? Es erlaubt URLs für soziale Netzwerke zu teilen. Gibt es etwas Ähnliches oder muss ich für Facebook, Twitter und E-Mail separat codieren?

28
sunil

Ich weiß nicht, ob Sie das meinen, aber Sie können das integrierte Android-Freigabemenü verwenden ...

Sie können eine URL für Facebook, Twitter, Google Mail und mehr freigeben (sofern die Apps auf Ihrem Gerät installiert sind), indem Sie Intents verwenden:

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"));

Wenn die App, die Sie freigeben möchten, nicht auf dem Gerät des Benutzers installiert ist, z. B. Facebook, müssen Sie das Facebook SDK verwenden.

Wenn Sie möchten, dass Ihre Aktivität auch Textdaten verarbeitet, die von anderen Apps freigegeben wurden, können Sie dies zu Ihrer AndroidManifest.xml hinzufügen:

<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>

Hoffe das hilft!

67
Lior Iluz

Sie können auch die Klasse ShareCompat aus der Support-Bibliothek verwenden.

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

Für Facebook können Sie `verwenden

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

website-URLs können sich auf jede Ressource beziehen, wenn Sie beispielsweise ein Bild aus dem Internet abrufen und an Ihrer Wand freigeben möchten.

hoffe das würde helfen

4

Sie können dies versuchen ...

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

Hier ist meine Implementierung. Sie können weitere Apps hinzufügen, indem Sie einfach Paketnamen hinzufügen. Dieser Code sortiert die Anwendungen auch nach ihrem Namen.

    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