我试图捕获结果,Intent.createChooser
以了解用户选择共享的应用程序.
我知道有很多与此相关的帖子:
如何知道用户在使用意向选择器时选择的应用程序?
/sf/ask/17360801/?rq=1
如何从startActivityForResult中获取用户选择(Intent.createChooser(fileIntent,"使用...打开文件"),APP_PICKED);?
在Android上捕获和拦截ACTION_SEND意图
但是这些帖子有些陈旧,我希望可能会有一些新的发展.
我正在尝试实现共享操作,而不会出现在菜单中.我想要的最接近的解决方案由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);
Benjamin.. 14
从API级别22开始,它现在实际上是可能的.在Android 5.1中createChooser (Intent target, CharSequence title, IntentSender sender)
,添加了一个方法(),允许接收用户选择的结果.当您提供IntentSender
to时createChooser
,将ComponentName
通过用户选择的选择器对话框通知发件人.它会在一个名为额外提供EXTRA_CHOSEN_COMPONENT
的int IntentSender
被通知.