当前位置:  开发笔记 > 编程语言 > 正文

mailto:Android中不支持的链接?

如何解决《mailto:Android中不支持的链接?》经验,为你挑选了1个好方法。

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



1> Nathan Schwe..:

您必须自己在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,并将其分配给您的webview使用setWebViewClient(mWebClient).


关于这个解决方案的一个小警告:该方法总是返回true,它告诉WebView"我们的WebViewClient实现处理所有内容" - 这可能会为重定向的边缘情况带来问题,例如在JavaScript中使用`location.replace()`.而不是`view.loadUrl(url); return true;`你可以输入`return false;`来实现相同的效果,而不会引入错误.在[这个对另一个问题的回答]中查看我的更长解释(http://stackoverflow.com/a/14335335/241456)
推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有