在我的应用程序中,我需要保存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对象?如果有任何方法,请指导我采用这种方法。
答案 0 :(得分:0)
如果您look at the implementation,您发现Intent
必须设置标记URI_ANDROID_APP_SCHEME
或URI_INTENT_SCHEME
,或者填写data
URI。< / p>
我个人从未做过这样的事情,但我想如果你有一个明确的意图没有附加数据URI,你需要一些标志将它转换成一些字符串表示。