2014-01-09 37 views
0

当意图完成时,我遇到了重新加载活动的问题。一旦意图完成,webview活动重新加载

我有一个使用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

您想要startActivityForResult并执行onActivityResult - 无法保证在电子邮件成功发送(因为您依赖第三方应用程序)时,onActivityResult中的resultCode将为RESULT_OK,但这是一个相当不错的选择。

至于你的其他问题,你可以尝试返回false在shouldOverrideUrlLoading当URL是mailto:

0

也许尝试保存您的WebView的状态:

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 
} 

如果它不工作,我建议你看看这个解决方案:

http://www.devahead.com/blog/2012/01/preserving-the-state-of-an-android-webview-on-screen-orientation-change/

我认为这是同样的问题,旋转离子,你的活动似乎是破坏,但你可以保存你的webview的状态。

0

当您第一次运行发送邮件时,尝试设置布尔变量为true。并且在任何时候启动您的微调器之前检查此变量是否为false。

p.s. 'dl'是什么?

相关问题