web-dev-qa-db-ja.com

AndroidでFacebook、Twitter、メールにURLを共有しますか?

Android向けgetsharekit.comに似たものはありますか?ソーシャルネットワーキングサイトとURLを共有できます。これに似たものはありますか、Facebook、Twitter、メール用に別々にコーディングする必要がありますか?

37
sunil

それがあなたが意味するものかどうかはわかりませんが、Android組み込みの共有メニューを使用することができます...

Intentを使用して、Facebook、Twitter、GmailなどとURLを共有できます(アプリがデバイスにインストールされている場合)。

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

共有するアプリがユーザーのデバイス(Facebookなど)にインストールされていない場合、Facebook SDKを使用する必要があります。

他のアプリから共有されたテキストデータもアクティビティで処理する場合は、これを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>

お役に立てれば!

73
Lior Iluz

サポートライブラリのShareCompatクラスも使用できます。

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

22
lukjar

Facebookの場合は、 `

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

ウェブサイトのURLは、たとえばインターネットから画像を取得して、それを壁で共有したい場合など、任意のリソースを参照するものにすることができます。

これが役立つことを願って

6

これを試すことができます...

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

これが私の実装です。パッケージ名を追加するだけで、必要に応じてアプリを追加できます。このコードは、アプリケーションを名前に従ってソートします。

    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