当执行操作时,我的应用程序将(可选)发送社交媒体更新。

我想通过使用用户安装的社交媒体应用程序来做到这一点。我不想限制用户使用任何特定的应用程序集,因此任何可以响应ACTION_SEND类型为text/plain的Intent的东西都可以。

但是,我不希望用户每次都选择-通常,他们每次都会使用相同的应用程序,即一旦他们选择了TweetCaster / Facebook /其他任何东西,他们就会坚持使用它。

如果仅使用startActivity()ACTION_SEND进行text/plain,则会出现“使用“完成操作”选择器,并且还有一个“默认情况下对此操作使用”复选框。

但是,这将为所有应用程序设置该意图的默认值,似乎(a)可能某人可能已经默认使用非社交媒体应用程序发送文本,并且(b)即使他们没有,默认将某个文本发送到某个地方这样的通用意图似乎有点“不礼貌”。

人们在这里通常做什么?我完成了一个ListPreference的工作,该列表允许选择特定的应用程序(这样我就可以在我的应用程序而不是系统范围内的应用程序中激发意图),但是对于这么简单的事情来说似乎有很多代码。

我想念一些更明显的东西吗?有没有办法激活选择器,以使“默认情况下对此操作使用”将仅用作我的应用程序ACTION_SENDing文本/纯文本的默认操作?

最佳答案

有没有办法激活选择器,以使“默认情况下对此操作使用”将仅用作我的应用程序ACTION_SENDing文本/纯文本的默认操作?


不,对不起这就是为什么大多数ACTION_SEND示例使用Intent.createChooser()显示,消除“将其设为默认值”复选框并忽略用户可能设置的所有系统范围默认值的原因之一。

您可以使用自己的“默认”逻辑创建自己的选择器ListPreference(或以对话框为主题的AlertDialog),而不必遵循Activity路线。该“默认”可以是:


按照系统范围的“将其设为默认值”的特定选择
根据行为(例如,将您的列表分为“常用”和“其他”选项)
基于其他因素(所有用户的综合行为,月相等)


创建具有这种功能的“超级选择器”是我的中级痒,如果没人能击败我,我可能会在今年的某个时候开始尝试。

关于android - 合理设置ACTION_SEND文本的默认应用(通过选择器,首选项等),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9719125/

10-12 03:58
查看更多