我正在创建一个自定义首选项,以记住用户想要从可能列表中运行的 Activity 。 (有效地实现了选择器的“当你看到这种 Intent 时总是启动这个 Activity ”,但特别记住我的特定应用程序的结果,而不是系统范围的结果。)
我得到了这样一个可能的 Activity 列表:
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
我的问题是,一旦我的用户选择了其中之一,将其保留为偏好的最佳方式是什么?也就是说,我要在我的 SharedPreferences 中写入什么(如果可能,在单个项目中),以及在下次运行我的应用程序时,我如何读取它并触发相应的 Intent?
最佳答案
那么,您可以在 Intent
上调用 toUri()
将其转换为 Uri
,然后您可以将其转换为String
通过标准的 toString()
。要反转该过程,请使用 Intent.parseUri()
将 String
解析为 Intent
。
但是,您需要添加足够的保护来应对各种可能性,例如:
- 用户删除了应用
- 用户升级了应用,应用不再支持你保存的
Intent
此外,请小心放置探针(文本)的位置。 :-)
关于android - 坚持 Android 启动 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9784804/