dsg*_*dsg 6 java android selection getselection android-intent
我试图捕获结果,Intent.createChooser以了解用户选择共享的应用程序.
我知道有很多与此相关的帖子:
但是这些帖子有些陈旧,我希望可能会有一些新的发展.
我正在尝试实现共享操作,而不会出现在菜单中.我想要的最接近的解决方案由ClickClickClack提供,他建议实施自定义应用程序选择器,但这似乎很重要.此外,似乎可能会有一些Android钩子来获取所选的应用程序,例如ActivityChooserModel.OnChooseActivityListener.
我的MainActivity中有以下代码,但该onShareTargetSelected方法永远不会被调用.
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, shareMessage());
sendIntent.setType("text/plain");
Intent intent = Intent.createChooser(sendIntent, getResources().getText(R.string.share_prompt));
ShareActionProvider sap = new ShareActionProvider(this);
sap.setShareIntent(sendIntent);
sap.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener() {
@Override
public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
System.out.println("Success!!");
return false;
}
});
startActivityForResult(intent, 1);
Run Code Online (Sandbox Code Playgroud)
Ben*_*min 14
从API级别22开始,它现在实际上是可能的.在Android 5.1中createChooser (Intent target, CharSequence title, IntentSender sender),添加了一个方法(),允许接收用户选择的结果.当您提供IntentSenderto时createChooser,将ComponentName通过用户选择的选择器对话框通知发件人.它会在一个名为额外提供EXTRA_CHOSEN_COMPONENT的int IntentSender被通知.
我试图捕获 Intent.createChooser 的结果,以了解用户选择共享哪个应用程序。
这是不可能的。
其他“选择”解决方案,例如ShareActionProvider,可能会提供更多。我还没有检查Intent所传递的内容onShareTargetSelected()以查看它是否包含ComponentName所选目标的内容,尽管文档建议它应该包含。
而且,如果由于某种原因没有,欢迎您尝试分叉ShareActionProvider以添加您想要的挂钩。
不能以这种方式处理的原因createChooser()很简单,因为“选择”是由与您不同的过程完成的。
我的 MainActivity 中有以下代码,但 onShareTargetSelected 方法永远不会被调用。
ShareActionProvider进入操作栏。您不能只创建一个实例,调用几个 setter,然后期望发生一些事情。
| 归档时间: |
|
| 查看次数: |
7631 次 |
| 最近记录: |