2017-12-21 32 views
0

내 앱에서 나중에 다시 사용할 수 있도록 의도 한 데이터를 저장해야합니다 (앱 재시작시). 내가 시도한 것은 >>String를 얻을 수 Uri에 구문 분석 Intent를 검색 할 수 SharedPreferencesSharedPreferences에서 인 텐트를 저장하고 검색하십시오.

String을 넣어 :

저장하기SharedPreferences에서 String 받기 >>를 사용 String를 얻을 구문을 분석하여 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(); 
    } 
} 

나는이 방법을 시도했지만 그것은 빈 반환합니다. 내가 코드를 디버깅하기 위해 노력하고이 String uri

saveIntent() 방법, data.toUri(0) 양수인 '빈 문자열'에 있기 때문입니다 것으로 나타났습니다 다른 방법이 있다면 뭔가 잘못하고있는 중이 곳을 가르쳐주세요, 그리고 언급을 해주세요 Intent 객체를 바인딩 된 모든 데이터와 함께 저장합니다.

저는 인터넷을 검색하여 JSON으로 파싱하는 것이 방법 일 수 있다는 것을 알았지 만,이 접근법을 시도한 대부분의 사람들은 일부 활동의 결과로 인 텐트 오브젝트와 함께 번들 된 알 수없는 데이터를 잃어버린 것에 대해 불만을 제기합니다.

그리고 Intent 개체를 저장하는 것이 실제로 가능한지 언급 해주십시오. ?? 어떤 방법이 있다면, 그 방법으로 안내해주십시오. 당신이 look at the implementation 경우

답변

0

당신은 당신의 Intent이 플래그 URI_ANDROID_APP_SCHEME 또는 URI_INTENT_SCHEME 세트를 가지고, 또는이 URI가 data 밖으로 채워져 있어야합니다 어느 것을 알 수 있습니다.

저는 개인적으로 이런 식으로 한 적이 없지만 데이터 URI가 첨부되지 않은 명시적인 의도가있는 경우 일부 문자열 표현으로 변환해야하는 플래그가 필요합니다.

+0

모두 성공하지 못했습니다. –

+0

직렬화하려고하는 '의도'로 드릴 다운하십시오. 실제로 직렬화 할 정보가 너무 적을 수 있습니다. 문자열에서 끝나야하는 구현이 지정하는 것과 사용자가 가지고있는 항목을 비교하십시오. –

+0

의도가 'Intent.URI_INTENT_SCHEME' 플래그로 uri로 구문 분석 될 때 문자열에 "의도 :"가 반환됩니다. 즉, 모든 의도 항목이 누락되었습니다. –