android - 明智地为 ACTION_SEND 文本设置默认应用程序(通过选择器、首选项等)

标签 android android-intent

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

我想通过使用用户安装的社交媒体应用程序来执行此操作。我不想将用户限制为任何特定的应用程序集,因此任何可以响应 text/plain 类型的 ACTION_SEND Intent 的内容都可以。

但是,我不希望用户每次都必须进行选择 - 通常,他们每次都会使用相同的应用程序,即一旦他们选择了 TweetCaster/Facebook/无论什么,他们就会坚持下去有了它。

如果我只是使用 ACTION_SENDtext/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/

相关文章:

Android 错误 :Failed to find: com. android.support :design:21. 0.3

android - 通过 HTTP 表单上传文件,通过 MultipartEntityBuilder,带有进度条

java - 无法恢复 Activity 空指针异常和错误膨胀类 fragment ?

java - 同一 Activity 中的 Intent - Android

android - RTSP 安卓媒体播放器

java - Android:从服务 Intent 中获取额外信息?

java - Android 中循环异步任务 - 有什么好方法?

java - 按下删除按钮后,如何从输入到我的textView中的数据库中删除值?

android - 如何清除 Android Stack 的 Activity ?

按导航栏后退按钮时,Android Activity 返回到启动它的 Activity 而不是父 Activity