web-dev-qa-db-ja.com

Android WebViewがURLをロードしない

WebView[〜#〜] url [〜#〜] をロードしたい

私は次のコードを使用しました:

webView = (WebView) findViewById(R.id.webview1);
webView.setWebViewClient(new HostsWebClient());
webView.getSettings().setPluginState(PluginState.ON);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setSupportMultipleWindows(false);
webView.getSettings().setSupportZoom(false);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);

webView.loadUrl(URL);

しかし、実行すると、URLをロードできません。 Webページを利用できません。

誰も助けてもらえますか?

35
String

マニフェストファイルにインターネットアクセス許可を追加しましたか?そうでない場合は、次の行を追加します。

 <uses-permission Android:name="Android.permission.INTERNET"/> 

これがあなたのお役に立てば幸いです。

[〜#〜] edit [〜#〜]

以下の行を使用してください。

public class WebViewDemo extends Activity {


    private WebView webView;


    Activity activity ;
    private ProgressDialog progDailog; 

    @SuppressLint("NewApi")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        activity = this;

        progDailog = ProgressDialog.show(activity, "Loading","Please wait...", true);
        progDailog.setCancelable(false);



       webView = (WebView) findViewById(R.id.webview_compontent);



       webView.getSettings().setJavaScriptEnabled(true);     
       webView.getSettings().setLoadWithOverviewMode(true);
       webView.getSettings().setUseWideViewPort(true);        
        webView.setWebViewClient(new WebViewClient(){

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                progDailog.show();
                view.loadUrl(url);

                return true;                
            }
            @Override
            public void onPageFinished(WebView view, final String url) {
                progDailog.dismiss();
            }
        });

        webView.loadUrl("http://www.teluguoneradio.com/rssHostDescr.php?hostId=147");

       }
85
itsrajesh4uguys

マニフェストにインターネットアクセス許可を追加します。

なので <uses-permission Android:name="Android.permission.INTERNET"/>

このコードは動作しています

  public class WebActivity extends Activity {
  WebView wv;

 String url="http://www.teluguoneradio.com/rssHostDescr.php?hostId=147";

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web);
    wv=(WebView)findViewById(R.id.webUrl_WEB);



WebSettings webSettings = wv.getSettings();
    wv.getSettings().setLoadWithOverviewMode(true);
    wv.getSettings().setUseWideViewPort(true);
    wv.getSettings().setBuiltInZoomControls(true);
    wv.getSettings().setPluginState(PluginState.ON);


    wv.setWebViewClient(new myWebClient());

    wv.loadUrl(url);
}




public class myWebClient extends WebViewClient {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub

        view.loadUrl(url);
        return true;

    }
}
16
Rank

多分SSL

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        // ignore ssl error
        if (handler != null){
            handler.proceed();
        } else {
            super.onReceivedSslError(view, null, error);
        }
    }
13
wanpen

ウェブビューで次のことを使用してください

webview.setWebChromeClient(new WebChromeClient());

次に、WebChromeClientクラスに必要なメソッドを実装します。

5
vinoth

注:インターネットの許可が与えられていることを確認してください。

Android 9.0、

WebviewまたはImageloaderは、Android 9にはすべてのサブドメインのマニフェストファイルで有効にする必要があるネットワークセキュリティの問題があるため、URLまたは画像をロードできません。セキュリティ設定ファイルを追加できます。

  1. リソースに@ xml/network_security_configを追加します。
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">www.google.com</domain>
    </domain-config>
</network-security-config>
  1. このセキュリティ構成を次のようにマニフェストに追加します。
<application
   
    Android:networkSecurityConfig="@xml/network_security_config"
    ...>
</application>

すべてのサブドメインを許可する場合

<application
   Android:usesCleartextTraffic="true"
    ...>
</application>
4
Yogendra

最初に、マニフェストファイルにインターネットアクセス許可があるかどうかを確認します。

<uses-permission Android:name="Android.permission.INTERNET" />

その後、onCreate()またはinitialize()メソッドで次のコードを追加できます。

final WebView webview = (WebView) rootView.findViewById(R.id.webview);
        webview.setWebViewClient(new MyWebViewClient());
        webview.getSettings().setBuiltInZoomControls(false);
        webview.getSettings().setSupportZoom(false);
        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webview.getSettings().setAllowFileAccess(true);
        webview.getSettings().setDomStorageEnabled(true);
        webview.loadUrl(URL);

そして、webviewのコールバックを処理するクラスを作成します-

public class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                           //your handling...
                return super.shouldOverrideUrlLoading(view, url);
        }
    }

同じクラスで、次のような他の重要なコールバックを使用することもできます-

- onPageStarted()
- onPageFinished()
- onReceivedSslError()

また、「SwipeRefreshLayout」を追加して、スワイプ更新を有効にし、Webビューを更新できます。

<Android.support.v4.widget.SwipeRefreshLayout
        Android:id="@+id/swipeRefreshLayout"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">
        <WebView
            Android:id="@+id/webview"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent" />
    </Android.support.v4.widget.SwipeRefreshLayout>

また、ユーザーが画面をスワイプしたときにWebビューを更新します。

SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
            mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            mSwipeRefreshLayout.setRefreshing(false);
                            webview.reload();
                        }
                    }, 3000);
                }
            });
3
DsD

代替ソリューションとして:

私にとってwebView.getSettings().setUserAgentString("Android WebView")はトリックをしました。

私はすでにインターネット許可とWebViewClientならびにWebChromeClientを実装しました

2
mad_manny

最も簡単な解決策は、Webビューを含むXMLレイアウトに移動することです。 Android:layout_widthとAndroid:layout_heightを「wrap_content」から「match_parent」に変更します。

  <WebView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:id="@+id/webView"/>
1
Arlene Jusayan

私の場合、以下の関数をWebViewClientに追加するとエラーが修正されました。関数は次のとおりです。onReceivedSslErrorおよびDepricatedおよびshouldOverrideUrlLoadingの新しいAPIバージョン

        webView.setWebViewClient(new WebViewClient() {

        @SuppressWarnings("deprecation")
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            Log.i(TAG, "loading: deprecation");
            return  true;
            //return super.shouldOverrideUrlLoading(view, url);
        }

        @Override
        @TargetApi(Build.VERSION_CODES.N)
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            view.loadUrl(request.getUrl().toString());
            Log.i(TAG, "loading: build.VERSION_CODES.N");
            return true;
            //return super.shouldOverrideUrlLoading(view, request);
        }

        @Override
        public void onPageStarted(
                WebView view, String url, Bitmap favicon) {
            Log.i(TAG, "page started:"+url);
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, final String url) {

            Log.i(TAG, "page finished:"+url);

        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError er) {
            handler.proceed();
        }

    });
1
Hamid