【问题标题】:Webview isn't showing the pageWebview 不显示页面
【发布时间】:2017-09-16 11:31:46
【问题描述】:

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

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

主要活动代码:

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代码:

<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>

我已经在 android manifest 中添加了&lt;uses-permission android:name="android.permission.INTERNET"/&gt;

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

【问题讨论】:

  • 您是否在清单文件中添加了 INTERNET 权限
  • @NileshRathod 是的
  • 为什么你要 setContentView 两次
  • @NileshRathod 已经删除了它并保持不工作
  • @InsaneDarkness 是同一个 html 在笔记本电脑上工作正常吗?

标签: javascript java android webview


【解决方案1】:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    WebView clasica = new WebView(this);
    clasica.loadUrl("file:///android_asset/index.html");
    setContentView(clasica);
}

【讨论】:

  • 显示网络:ERR_TOO_MANY_REDIRECTS
【解决方案2】:

尝试将这个第一个加载 url 加载到执行 setContentViewweb 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");
    }

【讨论】:

  • 现在弹出网络:ERR_TOO_MANY_REDIRECTS
  • 同上 :c
【解决方案3】:

只有在加载一些 url (通过 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);
}

【讨论】:

  • 我不太了解你 xD
  • 现在只是一个空白页
  • 检查更新。如果仍然不会,请先尝试从 sdcard 加载 html,检查其行为是否已加载,然后在 Web 视图中加载
猜你喜欢
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
相关资源
最近更新 更多