web-dev-qa-db-ja.com

Android app-ソーシャルネットワークでアプリを共有するための「共有」ボタンを追加する

アプリを持っていますが、アプリに共有ボタンを追加したいと思います。ボタンをクリックしたら、次のウィンドウを開きます。

enter image description here

次に、ユーザーはそれを共有する場所を選択し、次のデフォルトメッセージを表示します。「この素晴らしいアプリが見つかりました。ここで見つけてください 詳細?id = com.ideashower.readitlater.pro "

方法を教えて頂けますか?

17
david

解決策1:ACTION_SENDインテントを起動する

SENDインテントを起動するときは、通常、セレクターでラップする必要があります( createChooser(Intent、CharSequence) を使用)。これにより、ユーザーがデータを送信する方法を選択して適切なインターフェイスを使用できるようになります彼らが何をしているかを示すプロンプトを指定する。

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);

# change the type of data you need to share, 
# for image use "image/*"
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, URL_TO_SHARE);
startActivity(Intent.createChooser(intent, "Share"));

解決策2:ShareActionProviderを使用する

オーバーフローメニューに共有ボタンを追加したいだけの場合は、 ShareActionProvider もご覧ください。

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.share, menu);
    MenuItem item = menu.findItem(R.id.share_item);
    actionProvider = (ShareActionProvider) item.getActionProvider();

    // Create the share Intent
    String shareText = URL_TO_SHARE;
    Intent shareIntent = ShareCompat.IntentBuilder.from(this)
        .setType("text/plain").setText(shareText).getIntent();
    actionProvider.setShareIntent(shareIntent);
    return true;
}

お役に立てれば。 :)

32
Ankit Popli

Androidこのリンクの開発者: http://developer.Android.com/training/sharing/shareaction.html で説明されています)

このメニュー項目を追加する必要があります:

<item
        Android:id="@+id/menu_item_share"
        Android:showAsAction="ifRoom"
        Android:title="Share"
        Android:actionProviderClass=
            "Android.widget.ShareActionProvider" />

次に、アクティビティに次のコードを追加します。

private ShareActionProvider mShareActionProvider;
...

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate menu resource file.
    getMenuInflater().inflate(R.menu.share_menu, menu);

    // Locate MenuItem with ShareActionProvider
    MenuItem item = menu.findItem(R.id.menu_item_share);

    // Fetch and store ShareActionProvider
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    // Return true to display menu
    return true;
}

// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(shareIntent);
    }
}
3
Reijer