我正在创建一个自定义首选项来记住用户想要从可能列表中运行哪个活动。 (有效地实现了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的?
答案 0 :(得分:3)
好吧,您可以致电toUri()
上的Intent
将其转换为Uri
,然后您可以通过标准{{1}转换为String
}}。要撤消此过程,请使用toString()
将String
解析为Intent
。
但是,您需要添加足够的保护来处理各种可能性,例如:
Intent.parseUri()
另外,请小心坚持探测器(文本)。 : - )