Android Webview问题带有链接过滤

| 我希望有人能指出我在哪里。 我正在调用webviewclient并覆盖加载以捕获mailto链接(有效)和特定的外部URL(无效)。特定链接只是在浏览器中启动的非移动站点链接。我很想弄清楚这一点。
 public boolean shouldOverrideUrlLoading(WebView view, String url) {         
     if (url.startsWith(\"mailto:\")) {                    
        url = url.replaceFirst(\"mailto:\", \"\");
            url = url.trim();
            try {
            url = URLDecoder.decode(url,\"UTF-8\");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
    int subjectStart = url.indexOf(\"subject=\");
            int subjectStop = url.indexOf(\"&body=\");
            String subject = url.substring(subjectStart,subjectStop);
            subject = subject.replace(\"subject=\", \"\");
            String bod = url.substring(subjectStop);
            bod = bod.replace(\"&body=\", \"\");
            Intent i = new Intent(Intent.ACTION_SEND);
            i.setType(\"test/plain\");
            i.putExtra(Intent.EXTRA_SUBJECT,subject);               
            i.putExtra(Intent.EXTRA_TEXT, bod);
            startActivity(i);
            return true;

 } else if ( url.contains(\"[EXTERNAL LINK I WANT TO OPEN IN BROWSER]\") == true ) {
    //tried without intent and nothing
     Uri uri = Uri.parse(url.toString());
     Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri);
     startActivity(browserIntent);

     return false; //tried true here too

 } else { 
     view.loadUrl(url);
     return true;
     }
 }

 [...]
我尝试在其中使用return true和return false进行播放,并且尝试了一个无意浏览器的版本。几乎所有用户都将在Web视图中打开链接,而不是在浏览器中打开,而那些没有,没有执行任何操作的链接。 mailto运行良好,外部链接上我缺少什么? 如果您需要它,这是我给网络客户端打电话的方式。
public class MyWebViewClient extends WebViewClient {
    @Override
     public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     switcher = (ViewSwitcher) findViewById(R.id.profileSwitcher);
     WebView webView = (WebView) findViewById(R.id.webview);
     webView.getSettings().setJavaScriptEnabled(true);
     webView.loadUrl(\"[MY SITE]\");
     webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
     webView.setWebViewClient(new MyWebViewClient()
     {
         public void onPageFinished(WebView view, String url) {
             if (REFRESH_WEB ==1){
             startScan();
             REFRESH_WEB++;
             }
                }
     });
    
已邀请:
您是第一次编写它的,您要在浏览器中启动时应该返回true,同时您还要对mailto方案做一些额外的工作。您可以只使用内置的MailTo类。还要在@CommonsWare上+1注释一下要确定的内容是否对您不起作用。
public boolean shouldOverrideUrlLoading(Webview view, String url){

      if(url.startsWith(\"mailto:\"){
           MailTo mt = MailTo.parse(url);
           //populate intent with mt.getSubject(), mt.getBody(), etc
           //start activity
           return true;
      }
      else if(url.contains(\"youtube.com\")){
           Uri uri = Uri.parse(url.toString());
           Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri);
           startActivity(browserIntent);
           return true;
      }
      else return false;
}
    

要回复问题请先登录注册