【问题标题】:how to set anchor tag mailto: attribute in webview, android如何设置锚标签mailto:webview,android中的属性
【发布时间】:2011-03-12 23:08:21
【问题描述】:

我尝试设置锚标记 mailto 属性,如

<a href='mailto:info@company.com'>info@company.com</a>

在网络视图中。当我在模拟器上运行应用程序并单击显示“Unsupported Action ..”的链接时

如何在 android webview 中设置 mailto 属性...

谢谢

【问题讨论】:

  • 我让这个 mailto 属性在设备上工作。我不知道为什么相同的代码在模拟器上显示错误(如上所述)。

标签: android android-emulator android-widget


【解决方案1】:

这是 Cristian's Answer 的另一种选择。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
  if (!(url.startsWith("http") || url.startsWith("#"))) {
    launchIntent(url);
    return true;
  }
  view.loadUrl(url);
  return true;
}

private void launchIntent(String url){
    final Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
    Uri uri = Uri.parse(url);
    intent.setData(uri);
    context.startActivity(intent);
}

这将允许诸如 mailto: tel: 和 google.navigation:q=an+url+uncoded+address 之类的锚标记

如果您的 html 页面有其他您不希望启动意图的锚点,您可能需要调整条件。

【讨论】:

    【解决方案2】:

    设置为

    myTemplate ="<a>info@company.com</a>";
    

    或者只是

    myTemplate ="info@company.com";
    

    并加载到您的 WebView

    mWebView.loadDataWithBaseURL(null, myTemplate, "text/html", "utf-8", null);
    

    【讨论】:

      【解决方案3】:

      WebView 不支持高级 HTML 标签……你需要做的是:

      1. 为您的 webview 设置 webclient 并覆盖 url 加载
      2. 当您检测到带有mailto 的链接时,请尝试发送电子邮件。

      我会给你一些sn-p的代码,让你有一个想法。请记住,这只是一个基本示例,我现在无法对其进行测试:

      public void onCreate(Bundle icicle) {
          // blablabla
          WebView webview = (WebView) findViewById(R.id.webview); 
          webview.getSettings().setJavaScriptEnabled(true);
          webview.setWebViewClient( new YourWebClient()); 
          // blablabla
      }
      
      private class YourWebClient extends WebViewClient {     
          @Override
          public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if (url.contains("mailto")) {
                  // TODO: extract the email... that's your work, LOL
                  String email = "";
                  sendEmail();
                  return super.shouldOverrideUrlLoading(view, url);
              }
              view.loadUrl(url);
              return true;
          }
      }
      

      然后,发送电子邮件:

      public void sendEmail(String email){
          final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
          emailIntent.setType("plain/text");
          emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{email});
      
          String mySubject = "this is just if you want";
          emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, mySubject);
          String myBodyText = "this is just if you want";
          emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, myBodyText);
          context.startActivity(Intent.createChooser(intent, "Send mail...));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-01
        相关资源
        最近更新 更多