坚持Android发布意图?

时间:2012-03-20 10:15:21

标签: android android-intent sharedpreferences

我正在创建一个自定义首选项来记住用户想要从可能列表中运行哪个活动。 (有效地实现了Chooser的“当你看到这种意图时总是启动这个活动”,但是特别记住我的特定应用程序的结果,而不是整个系统。)

我得到了这样的可能活动列表:

    Intent myIntent = new Intent();
    myIntent.setAction(Intent.ACTION_SEND);
    myIntent.setType("text/plain");    
    myIntent.putExtra(Intent.EXTRA_TEXT, "Probe text");

    PackageManager manager = getContext().getPackageManager();
    List<ResolveInfo> infoList = manager.queryIntentActivities(myIntent,PackageManager.MATCH_DEFAULT_ONLY);

...生成ResolveInfo s。

列表

我的问题是,一旦我的用户选择了其中一个,那么将此作为偏好保留的最佳方式是什么?也就是说,我将什么写入我的SharedPreferences(如果可能的话,在单个项目中),以及在下一次运行我的应用程序时,我是如何阅读并启动相应的Intent的?

1 个答案:

答案 0 :(得分:3)

好吧,您可以致电toUri()上的Intent将其转换为Uri,然后您可以通过标准{{1}转换为String }}。要撤消此过程,请使用toString()String解析为Intent

但是,您需要添加足够的保护来处理各种可能性,例如:

  • 用户已移除该应用
  • 用户升级了该应用,该应用不再支持您保存的Intent.parseUri()

另外,请小心坚持探测器(文本)。 : - )