2012-03-20 79 views
3

我正在创建一个自定义首选项来记住用户想要从可能性列表中运行哪个活动。 (有效地实现Chooser的“始终启动此活动,当您看到此类意图时”,但会特别记住我的特定应用程序的结果,而不是系统范围的结果。)坚持Android发射意图?

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

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中触发?

回答

3

好了,你可以调用toUri()Intent要把它转换成一个Uri,然后你就可以通过标准toString()变成String。要反转该过程,请使用Intent.parseUri()String解析为Intent

但是,你需要足够的保护增加应对各种可能性,如:

  • 用户删除的应用程序
  • 用户升级应用程序,该应用程序不再支持Intent you saved

另外,请小心你在哪里粘住探针(文本)。 :-)

+0

谢谢,这似乎工作得很好。我会小心删除/更改的应用程序,并与我的探针:) – 2012-03-20 21:52:07