打开mailto:来自webview的链接

时间:2014-10-31 02:24:53

标签: android-webview ibm-mobilefirst

我想首先说我不是一个Java开发人员或任何Android开发人员。我在SO上找到的用于解决我的问题的链接并非特定于WL,我不确定将“解决方案”放在构建中的哪个位置。

我有简单的电子邮件链接来启动它:

<a href="mailto:foo@bar.com"></a>

在Android(4.0.4)中,应用程序会崩溃,说它不是受支持的协议。预计会有这么多。

我有一个解决方案(下面,来自SO,丢失链接)似乎是正确的方法,但我不确定这应该去哪里。

@Override
public boolean shouldOverrideUrlLoading(WebViewClient view, String url) {
    if( url.startsWith("http:") || url.startsWith("https:") ) {
        return false;
    }

    // Otherwise allow the OS to handle it
    else if (url.startsWith("tel:")) { 
        Intent tel = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
        startActivity(tel);
        return true;
    }
    else if (url.startsWith("mailto:")) {
        String body = "Enter your Question, Enquiry or Feedback below:\n\n";
        Intent mail = new Intent(Intent.ACTION_SEND);
        mail.setType("application/octet-stream");
        mail.putExtra(Intent.EXTRA_EMAIL, new String[]{"email address"});
        mail.putExtra(Intent.EXTRA_SUBJECT, "Subject");
        mail.putExtra(Intent.EXTRA_TEXT, body);
        startActivity(mail);
        return true;
        }
    return true;
}

显然非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

在Worklight混合应用程序中,您不需要使用本机代码来使用mailto:等功能。

要使其正常工作,即:单击将打开电子邮件屏幕的链接以供用户填写主题和消息,您可以按照以下步骤操作。如果您需要更多功能,请在您的问题中详细说明:

  1. 确保您使用的是适用于您正在使用的Worklight版本的最新iFix(due to recently fixed Cordova security bugs that affect this functionality)。这可以从Eclipse Marketplace或IBM Fix Central获得。

  2. 请按以下步骤操作:

    • 在native \ res \ xml \ config.xml中,删除并添加以下行:

      - <access origin="*"/>
      + <access origin="mailto://*" launch-external="true" />
      
    • 在共同的\ index.html中,我尝试了:

      <a href="mailto:my@email.address?Subject=Hello%20again">Send email</a>
      
  3. 结果是(取决于您的手机设置):要么获得设置电子邮件帐户的选项,请选择从哪个帐户发送邮件,或者获取电子邮件撰写屏幕。