Webview未显示该页面

时间:2017-09-16 11:31:47

标签: javascript java android webview

昨天我为父亲开始了一个项目,使用radionomy提供的嵌入代码将所有网络电台放在应用程序上。

我认为代码格式正确但是当我执行应用程序时,应用程序只显示一个空白页面。

主要活动代码:

android:layout_weight="1"

Html代码:

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");
    }
}

我已经在android清单上添加了<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>

我不知道自己做错了什么,我会感激一些帮助。

3 个答案:

答案 0 :(得分:0)

尝试将此第一个加载网址添加到执行web view

setContentView
@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");
    }

答案 1 :(得分:0)

只有在加载某些网址 (通过loadUrl()方法) 时才会调用以下代码。请检查它应该覆盖的方法签名。

通过设置webview客户端,您只是说明在加载时应该发生什么。但是你想要发生的事情应该首先开始。我有意义吗?

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;
        }
    });

解决方案:

@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);
}

答案 2 :(得分:0)

join_date