如何忽略用户使用全局共享意图设置的默认共享应用程序

时间:2017-01-24 14:49:25

标签: android android-intent

我正在使用全局共享意图共享一些文本,如下所示;

Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, "Some Text");
        startActivity(intent);

问题是,即使用户设置了默认应用,我也希望显示所有可用的应用以分享文字,因为下面的图片显示enter image description here

2 个答案:

答案 0 :(得分:0)

如何使用ShareActionProvider

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_item_share"
        app:showAsAction="ifRoom"
        android:title="Share"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider" />
    ...
</menu>

它不应该要求Just Once和'Always`选项。您可以在“菜单选项”中或任何您想要的位置添加此菜单。

答案 1 :(得分:0)

有一种方法可以使用PackageManager清除自己成为defailt活动,但您无法清除其他活动。

因此,为解决方法,您可以为此目的构建自己的UI。例如,输入BottomSheet数据,你就是这样:

PackageManager manager = context.getPackageManager();
List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);
if (infos.size() > 0) {
   //do UI stuff
} else { 
    //No Application can handle your intent 
}  

它看起来像:

enter image description here