正文
原因
还原代码
MainActivity implements RestoreActivityResultCallback
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.
.
.
webView.setWebViewClient(new WebViewClient() {
@Override public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
webView.onPageFinished(view, url);
}
});
webView.addJavascriptInterface(new JSInteraction(), "contact");
if (savedInstanceState != null) {
webView.restoreState(savedInstanceState);
} else {
webView.loadUrl(url);
}
}
@Override protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
webView.saveState(outState);
}
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_PICK_CONTACT) {
webView.onActivityResult(requestCode, resultCode, data);
if (Activity.RESULT_OK == resultCode && data != null) {
setContact(data);
}
}
}
@Override public void restoreActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_PICK_CONTACT && RESULT_OK == resultCode) {
setContact(data);
}
}
private void setContact(Intent data) {
String contact = readContactFormResult(data);
webView.loadUrl("javascript:setContact(\"" + contact + "\")");
}
Activity WebView restore流程