持久化Android启动意图?

3
我正在创建一个自定义偏好设置,以记住用户想要从可能性列表中运行哪个活动。(有效地实现了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列表。

我的问题是,一旦用户选择了其中一个,最好的方法是将其作为首选项持久化吗?也就是说,在我的SharedPreferences中写入什么(如果可能的话,只需一个条目),以及在应用的下一次运行时,如何读取它并触发相应的Intent?

1个回答

3
好的,您可以在Intent上调用toUri()将其转换为Uri,然后通过标准的toString()将其转换为String。要反向操作,使用Intent.parseUri()String解析为Intent
但是,您需要添加足够的保护来处理各种可能性,例如:
  • 用户删除了应用程序
  • 用户升级了应用程序,应用程序不再支持您保存的Intent
此外,请注意将探针(文本)放在哪里。 :-)

谢谢,那看起来运行良好。我会小心处理已删除/更改的应用程序以及我的探针 :) - Matt Gibson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接