Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
坚持Android发布意图?_Android_Android Intent_Sharedpreferences - Fatal编程技术网

坚持Android发布意图?

坚持Android发布意图?,android,android-intent,sharedpreferences,Android,Android Intent,Sharedpreferences,我正在创建一个自定义首选项,以便从一系列可能性中记住用户希望运行的活动。(有效地实现选择器的“看到这种意图时始终启动此活动”,但要特别记住我的特定应用程序的结果,而不是整个系统。) 我得到一个可能的活动列表,如下所示: Intent myIntent = new Intent(); myIntent.setAction(Intent.ACTION_SEND); myIntent.setType("text/plain"); myIntent.putExtr

我正在创建一个自定义首选项,以便从一系列可能性中记住用户希望运行的活动。(有效地实现选择器的“看到这种意图时始终启动此活动”,但要特别记住我的特定应用程序的结果,而不是整个系统。)

我得到一个可能的活动列表,如下所示:

    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);
Intent myIntent=newintent();
myIntent.setAction(Intent.ACTION\u SEND);
myIntent.setType(“文本/普通”);
myIntent.putExtra(Intent.EXTRA_文本,“探测文本”);
PackageManager=getContext().getPackageManager();
List infoList=manager.querytentActivities(仅限myIntent、PackageManager.MATCH_DEFAULT_);
…产生了一个s


我的问题是,一旦我的用户选择了其中一个,什么是将其作为首选项的最佳方式?也就是说,我应该在我的SharedReferences中写入什么内容(如果可能的话,在单个项目中),以及在下一次运行我的应用程序时,我如何读取这些内容并触发相应的Intent?

那么,您可以在
Intent
上调用
toUri()
,将其转换为
Uri
,然后可以通过标准的
toString()
将其转换为
字符串。要反转此过程,请使用
Intent.parseUri()
字符串
解析为
Intent

但是,您需要添加足够的保护以应对各种可能性,例如:

  • 用户已删除该应用程序
  • 用户升级了应用程序,应用程序不再支持您保存的
    意图

另外,请注意探头的粘贴位置(文本)。:-)

谢谢你,看来效果不错。我会小心处理删除/更改的应用程序和我的探测器:)