简体   繁体   English

Webview没有显示页面

[英]Webview isn't showing the page

Yesterday I began a project for my father to have all his web radio's on an app using the embed code that radionomy provides. 昨天,我为父亲开了一个项目,使用放射学提供的嵌入代码将他所有的网络收音机都放在一个应用程序中。

I think the code is well formed but when I execute the application, the app just shows a blank page. 我认为代码格式正确,但是当我执行该应用程序时,该应用程序仅显示一个空白页面。

Main activity code: 主要活动代码:

import android.annotation.TargetApi;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class CalsicaActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calsica);
        WebView clasica = new WebView(this);
        clasica.getSettings().setJavaScriptEnabled(true);
        setContentView(clasica);
        clasica.setWebViewClient(new WebViewClient() {
            @Override
            @TargetApi(Build.VERSION_CODES.N)
            public boolean shouldOverrideUrlLoading(WebView clasicav, WebResourceRequest request) {
                clasicav.loadUrl("file:///android_asset/index.html");
                return false;
            }
            @Override
            @SuppressWarnings("deprecation")
            public boolean shouldOverrideUrlLoading(WebView clasicav, String url) {
                clasicav.loadUrl("file:///android_asset/index.html"); 
                return false;
            }
        });
        //clasica.loadUrl("file:///android_asset/index.html");
    }
}

Html code: HTML代码:

<html>
<head><script>
    (function (win, doc, script, source, objectName) {
        (win.RadionomyPlayerObject = win.RadionomyPlayerObject || []).push(objectName);
        win[objectName] = win[objectName] || function (k, v) {
            (win[objectName].parameters = win[objectName].parameters || { src: source, version: '1.1' })[k] = v;
        };
        var js, rjs = doc.getElementsByTagName(script)[0];
        js = doc.createElement(script);
        js.async = 1;
        js.src = source;
        rjs.parentNode.insertBefore(js, rjs);
    }(window, document, 'script', 'https://www.radionomy.com/js/radionomy.player.js', 'radplayer'));
    radplayer('url', 'bravo-clasic');
    radplayer('type', 'medium');
    radplayer('autoplay', '1');
    radplayer('volume', '50');    
    radplayer('color1', '#000000');
    radplayer('color2', '#ffffff');
</script></head>
<body>
    <div class="radionomy-player"></div>
</body>
</html>

I already added <uses-permission android:name="android.permission.INTERNET"/> on the android manifest. 我已经在android清单中添加了<uses-permission android:name="android.permission.INTERNET"/>

I have no idea of what I could've done wrong, I'd appreciate some help. 我不知道该怎么做,我将不胜感激。

try this first load url in to your web view that perform setContentView 尝试先将此网址加载到执行setContentView web view

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        WebView clasica = new WebView(this);
        clasica.getSettings().setJavaScriptEnabled(true);
        clasica.loadUrl("file:///android_asset/index.html");

        setContentView(clasica);


        //clasica.loadUrl("file:///android_asset/index.html");
    }

Well below code will be called only when load some url (by loadUrl() method ) . 下面的代码仅在加载某些url (通过loadUrl()方法)时才会被调用。 Please check method signature it says should override. 请检查方法签名,该签名应予以覆盖。

By setting webview client you are just stating that what should happen during load time. 通过设置webview客户端,您只是在说加载期间应该发生什么。 But the things that your trying to make happen should start first. 但是,您要尝试实现的事情应该首先开始。 Am i making any sense ? 我说得通吗?

clasica.setWebViewClient(new WebViewClient() {
        @Override
        @TargetApi(Build.VERSION_CODES.N)
        public boolean shouldOverrideUrlLoading(WebView clasicav, WebResourceRequest request) {
            clasicav.loadUrl("file:///android_asset/index.html");
            return false;
        }
        @Override
        @SuppressWarnings("deprecation")
        public boolean shouldOverrideUrlLoading(WebView clasicav, String url) {
            clasicav.loadUrl("file:///android_asset/index.html"); 
            return false;
        }
    });

Solution : 解决方案:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   // setContentView(R.layout.activity_calsica);
    WebView clasica = new WebView(this);
    clasica.getSettings().setJavaScriptEnabled(true);
  // remove below code you dont need this
   /* clasica.setWebViewClient(new WebViewClient() {
        @Override
        @TargetApi(Build.VERSION_CODES.N)
        public boolean shouldOverrideUrlLoading(WebView clasicav, WebResourceRequest request) {
            clasicav.loadUrl("file:///android_asset/index.html");
            return false;
        }
        @Override
        @SuppressWarnings("deprecation")
        public boolean shouldOverrideUrlLoading(WebView clasicav, String url) {
            clasicav.loadUrl("file:///android_asset/index.html"); 
            return false;
        }
    });*/
 // you need this line   
 clasica.loadUrl("file:///android_asset/index.html");
 setContentView(clasica);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    WebView clasica = new WebView(this);
    clasica.loadUrl("file:///android_asset/index.html");
    setContentView(clasica);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM