为ShareActionProvider构建一个动态意图

时间:2014-06-30 14:35:03

标签: android android-intent

我想使用ShareActionProviderActionBar中提供按钮/子菜单,以共享由我应用的数据库生成的文件。将生成的文件取决于用户当前正在查看的选项卡。由于数据库中的数据可能会更改,因此在创建活动时无法生成文件,但必须在用户请求发送时创建该文件。

为此,我一直关注official Android guide。不幸的是,根据指南,

  

[...]如果动作提供者提供了一个动作子菜单,那么你的动作   当活动时,活动未收到onOptionsItemSelected()的电话   用户打开列表或选择其中一个子菜单项。

因此,似乎没有任何事情我可以听取在正确的时刻致电setShareIntent()

  • onOptionsItemSelected()未被触发,除非ShareActionProvider按钮被委托给溢出菜单,这完全违背了使用它的意义
  • onMenuItemClick()由于不明原因未被解雇
  • onShareTargetSelected()不能用于修改意图。设置新意图仅适用于下次选择项目时。

似乎API未涵盖关键事件。如何实现我需要的功能?

1 个答案:

答案 0 :(得分:1)

  

将生成的文件取决于用户当前正在查看的标签

当用户更改标签时更新Intent

  

由于数据库中的数据可能会更改,因此在创建活动时无法生成文件,但必须在用户请求发送活动时创建该文件。

如果这确实是一个文件(EXTRA_STREAM),请使用指向您Uri的{​​{1}} ContentProvider来生成文件。

如果是" file"您的意思是仅调整EXTRA_TEXT,在用户更改数据时执行此操作(例如TextWatcher上的EditText)。

虽然我同意ShareActionProvider理想情况下会有动态"模式,当用户点击它时,它会要求您在该点Intent。我还没有看到任何办法。