9

アプリにアクション バーは必要ありませんが、アクション バーによって提供される共有ボタンが必要です。

これは、アクション バーがあるときに行われます。

public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.main, menu);
    ShareActionProvider provider = (ShareActionProvider)
    menu.findItem(R.id.menu_share).getActionProvider();

    if (provider != null) {
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_TEXT, "hi");
        shareIntent.setType("text/plain");
        provider.setShareIntent(shareIntent);
    }

    return true;
}

また、menu.xml は menu フォルダーに保持されます。

他のレイアウトも定義されているxmlに独自の共有ボタンが必要な場合。

助けはありますか?

4

3 に答える 3

9

コンテンツを共有するのにアクション バーは必要ありません。実際、アクション バーがあっても、ほとんどのアプリは を使用しません。これはShareActionProvider、ビジュアル デザイナーがこれを嫌うためであり、ユーザーのデバイスで多くの最新の共有機能 (連絡先への直接共有など) をサポートしていないためです。代わりにIntent.createChooser、より堅牢な共有ダイアログを作成するために使用する必要があります。

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));

http://developer.android.com/training/sharing/send.html

アプリのどこからでも共有するためのさらに優れた方法は、 を使用することShareCompatです。簡単な例を次に示します。

ShareCompat.IntentBuilder.from(this)
           .setType("text/plain")
           .setText("I'm sharing!")
           .startChooser();

他の例はここにあります: https://android.googlesource.com/platform/development/+/master/samples/Support4Demos/src/com/example/android/supportv4/app/SharingSupport.java

于 2015-11-02T22:23:35.153 に答える