从SharedPreferences保存并检索Intent

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从SharedPreferences保存并检索Intent相关的知识,希望对你有一定的参考价值。

在我的应用程序中,我需要保存Intend数据供以后使用(在应用程序重新启动时)。我试过的是:

要保存:将Intent解析为Uri以获得String >>将String放入SharedPreferences

要检索:从String获取SharedPreferences >>使用获得的String将其解析为Intent

这是我保存和检索Intent的代码

private void saveIntent(Intent data){
    editor = prefs.edit();
    String uri = data.toUri(0); //intent.toURI() deprecated
    editor.putString("INTENT_DATA", uri);
    editor.commit();
}

private void retrieveIntent(){
    String intentString = prefs.getString("INTENT_DATA", null);
    try {
           mIntent = Intent.parseUri(intentString, 0);
    } catch (URISyntaxException e) {
           e.printStackTrace();
    }
}

我尝试过这种方法,但它返回Empty。我试图调试代码,发现这是因为,在saveIntent()方法中,data.toUri(0)将“空字符串”分配给String uri

请告诉我在哪里做错了,如果有其他方法来存储Intent对象以及绑定到它的所有数据,请提及。

我搜索过互联网并发现解析为JSON可能是一种方式,但是大多数尝试这种方法的人抱怨丢失与某些活动结果捆绑在一起的未知数据。

请注意是否真的可以保存Intent对象?如果有任何方法,请指导我这种方法。

答案

如果你look at the implementation你看到你的Intent必须要么设置标志URI_android_APP_SCHEMEURI_INTENT_SCHEME,要么填写它的data URI。

我个人从来没有做过这样的事情,但我想如果你有一个明确的意图没有附加数据URI,你需要一些标志将它转换为一些字符串表示。

以上是关于从SharedPreferences保存并检索Intent的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 sharedPreferences 检索地图时出现颤振错误

我可以使用一个按钮将数据保存在 sharedPreferences 中,然后使用另一个按钮来检索它吗?

如何从复选框数组中保存布尔状态并在使用 SharedPreferences 加载适配器时加载它们的状态

无法从SharedPreferences检索数据?

使用 SharedPreferences 保存字节数组

5.1 保存键值集