9

我没有真正的 Android 设备,所以我现在使用模拟器进行所有开发,mailto: web 链接在 Android 设备 2.1 及以下版本上真的不支持吗?2.2 有效,但每次我点击mailto:1.6 或 2.1 上的链接时,我都会得到一个 [不支持的操作] 对话框。有真机的人想测试一下吗?

4

2 回答 2

35

您必须在 WebViewClient 中自己处理

public class MyWebViewClient extends WebViewClient {
    Activity mContext;
    public MyWebViewClient(Activity context){
        this.mContext = context;
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {     
        if(url.startsWith("mailto:")){
            MailTo mt = MailTo.parse(url);
            Intent i = new Intent(Intent.ACTION_SEND);
            i.setType("text/plain");
            i.putExtra(Intent.EXTRA_EMAIL, new String[]{mt.getTo()});
            i.putExtra(Intent.EXTRA_SUBJECT, mt.getSubject());
            i.putExtra(Intent.EXTRA_CC, mt.getCc());
            i.putExtra(Intent.EXTRA_TEXT, mt.getBody());
            mContext.startActivity(i);
            view.reload();
            return true;
        }
        view.loadUrl(url);
        return true;
    }
}

在您的活动中,您保留对的引用MyWebViewClient并将其分配给您的webviewwith setWebViewClient(mWebClient)

于 2010-09-08T20:46:04.893 回答
2

一个更简单的方法是:

if(url.startsWith("mailto:")){
    Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
    view.getContext().startActivity(intent);
}
于 2012-09-18T13:56:48.343 回答