android中所有应用程序的共享链接按钮

时间:2018-07-10 22:16:39

标签: java android android-intent share

我的android项目中有下一个共享ImageView按钮:

final ImageView share = findViewById(R.id.btn_share);
 share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent myIntent = new Intent(Intent.ACTION_SEND);
                myIntent.setType("text/plane");
                myIntent.putExtra(Intent.EXTRA_TEXT, some_url_from_my_app);
                startActivity(Intent.createChooser(myIntent, "Share Using"));
            }
        });

我的问题是,当我单击按钮时,我只看到很少的应用程序,而不是手机中想要的所有应用程序,例如Facebook,Instagarm等...

我应该怎么做才能查看手机中的所有应用程序,以便能够共享所有应用程序的链接?

2 个答案:

答案 0 :(得分:0)

我已经很长时间没有这样做了,所以不要把我所说的一切视为理所当然。

删除startActivity行。

使用res文件夹内的名称菜单创建一个XML Resource文件夹。 创建布局menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/share_menu">
    <item
        android:id="@+id/menu_item_share"
        android:showAsAction="ifRoom"
        android:title="Share"
        android:actionProviderClass=
            "android.widget.ShareActionProvider" />
</menu>

确保您覆盖onCreateOptionsMenu:

import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.ShareActionProvider;
...
private ShareActionProvider mShareActionProvider;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate menu resource file.
    // R.<XML resource folder>.<XML layout filename>
    getMenuInflater().inflate(R.menu.menu, menu);



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

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

    // Return true to display menu
    return true;
}

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

让我知道这是否有帮助。

enter image description here

答案 1 :(得分:0)

经过一些调查和几个小时,我设法解决了这个问题。 我所做的就是不做:

plot(xMix, which = 2, nclass=25, col2=c("dimgrey","black"))

我做到了:

myIntent.setType("text/plane");

这向我展示了所有可共享的应用。 关于Facebook分享,我使用了Facebook SDK。 希望这会有所帮助。