使用Android操作栏分享意图

Bac*_*m01 2 android android-menu android-optionsmenu

我正在使用操作栏上的菜单项,我想通过单击共享图标来共享我的应用程序.当我单击共享图标时,它不起作用.另外,我想"install this app"在共享时添加文字说明.

这是我的代码:

private ShareActionProvider mShareActionProvider;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.mainpage, menu);
    MenuItem item = menu.findItem(R.id.menu_item_share);
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    return true;
}

private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(shareIntent);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mainpage.xml菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_item_share"
    android:showAsAction="ifRoom"
    android:title="Share"
    android:icon="@drawable/ic_store"
    android:actionProviderClass="android.widget.ShareActionProvider" />
</menu>
Run Code Online (Sandbox Code Playgroud)

ian*_*ake 18

如果你想有一个静态的份额Intent(即,它永远不会改变),那么你更新你的onCreateOptionsMenu

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.mainpage, menu);
    MenuItem item = menu.findItem(R.id.menu_item_share);
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();
    // Create the share Intent
    String playStoreLink = "https://play.google.com/store/apps/details?id=" +
        getPackageName();
    String yourShareText = "Install this app " + playStoreLink;
    Intent shareIntent = ShareCompat.IntentBuilder.from(this)
        .setType("text/plain").setText(yourShareText).getIntent();
    // Set the share Intent
    mShareActionProvider.setShareIntent(shareIntent);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

  • @Martin - 实际上,当单击ShareActionProvider AFAIK时没有监听器 - 您应该在需要数据后立即设置意图. (2认同)