Android 如何忽略用户使用全局共享意图设置的默认共享应用程序
我正在使用Global share intent来分享一些文本,如下所示:Android 如何忽略用户使用全局共享意图设置的默认共享应用程序,android,android-intent,Android,Android Intent,我正在使用Global share 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_T
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);
问题是我想显示所有可与之共享文本的应用程序,即使用户已设置了默认应用程序,如下图所示如何使用
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>
...
它不应该只要求
一次
和“始终”选项。您可以将此菜单添加到“菜单选项”或任何您想要的位置 如何使用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>
...
它不应该只要求
一次
和“始终”选项。您可以将此菜单添加到“菜单选项”或任何您想要的位置 有一种方法可以使用PackageManager
将自己从defailt活动中清除,但不能清除其他活动
因此,作为解决方法,您可以为此构建自己的UI。例如,输入通过这种方式获得的数据:
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
}
PackageManager=context.getPackageManager();
List infos=manager.querytentActivities(intent,0);
如果(infos.size()>0){
//做用户界面的东西
}否则{
//没有应用程序可以处理您的意图
}
它可以如下所示:
有一种方法可以使用
PackageManager
将自己从defailt活动中清除,但不能清除其他活动
因此,作为解决方法,您可以为此构建自己的UI。例如,输入通过这种方式获得的数据:
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
}
PackageManager=context.getPackageManager();
List infos=manager.querytentActivities(intent,0);
如果(infos.size()>0){
//做用户界面的东西
}否则{
//没有应用程序可以处理您的意图
}
它可以如下所示:
此处介绍了一个简单的解决方案:此处介绍了一个简单的解决方案: