Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链接正在webview中打开我想在android studio的默认浏览器中打开_Java_Android_Android Studio_Webview - Fatal编程技术网

Java 链接正在webview中打开我想在android studio的默认浏览器中打开

Java 链接正在webview中打开我想在android studio的默认浏览器中打开,java,android,android-studio,webview,Java,Android,Android Studio,Webview,我有一个网络视图,我想当有人点击一个链接时,它应该在浏览器中打开,而不是在我的应用程序中。我该怎么做 我想显示第一个网页,但当有人点击它时,它应该在一个新的浏览器中打开,这就是我想要的。我该怎么做 这是我正在使用的代码 package com.packagename.weebly.free_recharge_app; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import a

我有一个网络视图,我想当有人点击一个链接时,它应该在浏览器中打开,而不是在我的应用程序中。我该怎么做

我想显示第一个网页,但当有人点击它时,它应该在一个新的浏览器中打开,这就是我想要的。我该怎么做

这是我正在使用的代码

package com.packagename.weebly.free_recharge_app;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class tab2 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup                               container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.tab2, container, false);

    WebView webView = (WebView) view.findViewById(R.id.webview1);
    webView.getSettings().setSupportZoom(true);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(true);
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setAppCacheEnabled(true);

    // Set cache size to 8 mb by default. should be more than enough
    webView.getSettings().setAppCacheMaxSize(1024*1024*8);
    // This next one is crazy. It's the DEFAULT location for your app's cache
    // But it didn't work for me without this line.
    // UPDATE: no hardcoded path. Thanks to Kevin Hawkins
    //  String appCachePath = this.getCacheDir().getAbsolutePath();
    //  Log.e(TAG, "appCachePath = " + appCachePath);
    // webView.getSettings().setAppCachePath(appCachePath);
    webView.getSettings().setAllowFileAccess(true);

    webView.getSettings().setJavaScriptEnabled(true);

    // Load the URLs inside the WebView, not in the external web browser
    webView.setWebViewClient(new WebViewClient());
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
    webView.loadUrl("http://google.com");

    return view;
    }
}
在添加代码@eugene之后

package com.freerechargeapp.weebly.free_recharge_app;


import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class tab2 extends Fragment {



@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup          container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.tab2, container, false);

WebView webView = (WebView) view.findViewById(R.id.webview1);
    webView.getSettings().setSupportZoom(true);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(true);
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setAppCacheEnabled(true);
    // Set cache size to 8 mb by default. should be more than enough
    webView.getSettings().setAppCacheMaxSize(1024*1024*8);
    // This next one is crazy. It's the DEFAULT location for your app's     cache
    // But it didn't work for me without this line.
    // UPDATE: no hardcoded path. Thanks to Kevin Hawkins
  //  String appCachePath = this.getCacheDir().getAbsolutePath();
  //  Log.e(TAG, "appCachePath = " + appCachePath);
   // webView.getSettings().setAppCachePath(appCachePath);
    webView.getSettings().setAllowFileAccess(true);

    webView.getSettings().setJavaScriptEnabled(true);



    // Load the URLs inside the WebView, not in the external web browser
    webView.setWebViewClient(new WebViewClient(){

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url){
            view.loadUrl(url);
            return false;
        }
    });

    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
    webView.loadUrl("google.com");

    return view;



}




}

只需删除
webView.setWebViewClient(新的WebViewClient())

或者加上这个

webView.setWebViewClient(new WebViewClient(){

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
      view.loadUrl(url);
      return false;
    }
});
1) 在活动中添加一个类

private class AppWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
}
2)
setWebViewClient
与新创建的类。您已经有一个,应该删除并替换为以下内容

webView.setWebViewClient(new AppWebViewClient());
,

当用户在WebView中单击网页链接时,默认行为是Android启动一个处理URL的应用程序。通常,默认web浏览器会打开并加载目标URL。

默认行为是,当在WebView中单击链接时,android将以Intent.ACTION\u视图启动它。通过向WebView提供WebViewClient,可以更改默认行为


只需删除您提供给WebView的WebViewClient,您的应用程序将使用默认流。

代码中的注释告诉您,这不会在新链接中打开代码

// Load the URLs inside the WebView, not in the external web browser
webView.setWebViewClient(new WebViewClient());
您需要重写shouldOverrideUrlLoading方法

webView.setWebViewClient(new WebViewClient(){

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
  view.loadUrl(url);
  return false;
}
});

返回值true表示主机应用程序处理URL,返回false表示当前WebView在删除
WebView.setWebViewClient(new WebViewClient())后处理URL

Hello@eugene它正在打开它在浏览器中打开,在android 4.4中工作,但在lollipop 5.1中,当你点击一个链接它在我的应用程序webView中打开时它不工作。你好@eugene即使添加了此代码它在lollipop上也不工作它在webView中打开我在我的问题中更新了我的代码。你好@Sharj,你能提供一个屏幕截图吗,gif或视频如何做到这一点事实上我是一个新手,我不知道我必须粘贴哪些代码,以及任何截图、gif或视频教程将在何处greati删除webViewClient并在android 4.4中打开浏览器中的URL,但在android 5.1中,它将在我的应用程序webView中打开我还能做什么?