我在意图完成时遇到了重新加载活动的问题。
我有一个使用webview的ShowHTM活动。 webview中的链接之一会生成发送电子邮件的意图。 ShowHTM活动启动一个微调器,一旦加载了webview,微调器就会停止。 单击webview上的链接,将弹出电子邮件客户端列表。选择一个后,我发送电子邮件。一旦发送电子邮件,控件就会返回ShowHTM活动,并再次开始显示微调器。我不需要。我想控制电子邮件意图的退出代码。即如果意图成功,则退出ShowHTM活动。
对此有何帮助?
这是我的ShowHTM活动:
public class ShowHTM extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_htm);
startSpinner(" Generating Preview... ");
h_wv = (WebView)findViewById(R.id.h_wv);
h_wv.setVisibility(View.GONE);
startSpinner(" Generating Preview... ");
h_wv.setInitialScale(24);
h_wv.getSettings().setLoadWithOverviewMode(true);
h_wv.getSettings().setUseWideViewPort(true);
h_wv.getSettings().setDefaultZoom(ZoomDensity.FAR);
h_wv.getSettings().setBuiltInZoomControls(true);
h_wv.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL);
h_wv.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
h_wv.getSettings().setAppCacheEnabled(false);
h_wv.getSettings().setJavaScriptEnabled(true);
h_wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
h_wv.setVisibility(View.VISIBLE);
if(dl != null){
dl.cancel();
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
if(url.startsWith("mailto:")) {
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",url.replaceFirst("mailto:", ""), null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "User Comment:");
emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(emailIntent, "Send email..."));
return true;
}
else {
view.loadUrl(url);
}
return false;
}
});
}
}
答案 0 :(得分:0)
也许尝试保存您的网页浏览状态:
protected void onSaveInstanceState(Bundle outState) {
h_wv.saveState(outState);
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
if (savedInstanceState != null) {
((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState);
} else {
// inflate and display spinner
startSpinner(" Generating Preview... ");
h_wv = (WebView)findViewById(R.id.h_wv);
...
}
// set settings & scale
}
如果它不起作用,我建议你看看这个解决方案:
我认为旋转是一样的问题,你的活动似乎被破坏但你可以保存你的webview状态。
答案 1 :(得分:0)
首次运行发送邮件时,请尝试将boolean变量设置为true。并且在任何时候启动微调器之前检查此变量是否为假。
P.S。什么是'dl'?
答案 2 :(得分:0)
您希望startActivityForResult
并实施onActivityResult
- 无法保证onActivityResult中的resultCode在成功发送电子邮件后将成为RESULT_OK(因为您依赖第三方应用程序),但这是一个不错的选择。
至于你的其他问题,当URL为mailto时,你可以尝试在shouldOverrideUrlLoading
中返回false: