执行操作时,我的应用程序将(可选)发送社交媒体更新。
我想通过使用用户安装的社交媒体应用程序来执行此操作。我不想将用户限制为任何特定的应用程序集,因此任何可以响应 text/plain
类型的 ACTION_SEND
Intent 的内容都可以。
但是,我不希望用户每次都必须进行选择 - 通常,他们每次都会使用相同的应用程序,即一旦他们选择了 TweetCaster/Facebook/无论什么,他们就会坚持下去有了它。
如果我只是使用 ACTION_SEND
和 text/plain
startActivity()
,我会得到一个“Complete action using”选择器,并且有还有一个“默认使用此操作”复选框。
但是,这将为所有应用程序设置该 Intent 的默认值,并且似乎(a)有人可能已经默认使用非社交媒体应用程序来发送文本,并且(b)即使他们还没有,默认发送一些文本到某处这样的通用 Intent 似乎有点“粗鲁”。
人们通常在这里做什么?我已经制作了一个允许选择特定应用程序的 ListPreference 的一半(这样我就可以在我的应用程序首选的应用程序上触发 Intent ,而不是系统范围内的),但看起来很多代码如此简单。
我错过了一些更明显的东西吗?有没有办法启动选择器,使得“默认使用此操作”将仅用作我的应用ACTION_SENDing文本/纯文本的默认操作?
最佳答案
Is there a way of firing up the chooser such that the "Use by default for this action" will only be used as the default action for my app ACTION_SENDing text/plain?
不,抱歉。这就是为什么大多数 ACTION_SEND
示例显示使用 Intent.createChooser()
的原因之一,以消除“将此设为默认值”复选框并忽略用户的任何系统范围默认值。可能已设置。
您可以使用自己的“默认值”创建自己的选择器AlertDialog
(或以对话框为主题的Activity
),而不是走ListPreference
路线”逻辑。该“默认”可能是:
- 特定的选择,遵循系统范围的“将其设为默认值”
- 基于行为(例如,将列表分为“经常使用”和“其他”选项)
- 基于其他因素(所有用户的总体行为、月相等)
创建一个具有此类功能的“ super 选择器”是我的一个中等程度的渴望,如果没有人比我更胜一筹的话,我可能会在今年的某个时候解决这个问题。
关于android - 明智地为 ACTION_SEND 文本设置默认应用程序(通过选择器、首选项等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9719125/