【问题标题】:Android WebView not showing local IP addressAndroid WebView 不显示本地 IP 地址
【发布时间】:2016-03-23 00:10:55
【问题描述】:

我有一个运行 WebIOPi 的 Raspberry Pi,它连接到继电器板以通过基于 Web 的界面打开和关闭设备。这是浏览器中界面的样子:

一切正常,但我想创建一个 android 应用程序,它可以简单地通过 WebView 显示基于 Web 的界面。我以前使用过 WebView,它看起来很简单,但我无法让它工作。

这是我的代码:

主活动:

package org.kevinbright.android.backyardcontrolapp;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {

    private WebView mWebViewer;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    //url = getIntent().getStringExtra(EXTRA_URL);

    mWebViewer = (WebView)findViewById(R.id.webviewer);
    mWebViewer.setWebViewClient(new WebViewClient());
    mWebViewer.clearCache(true);
    mWebViewer.getSettings().setJavaScriptEnabled(true);
    mWebViewer.loadUrl("http://192.168.1.100:8000/");
}
}

这是 XML:

<?xml version="1.0" encoding="UTF-8"?>

<LinearLayout android:orientation="vertical"
              android:layout_height="match_parent"
              android:layout_width="match_parent"
              xmlns:android="http://schemas.android.com/apk/res/android">

<WebView android:layout_height="match_parent"
         android:layout_width="match_parent"
         android:id="@+id/webviewer"/>

我补充说:

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

到清单。

我没有收到任何 logcat 错误,但是当我运行应用程序时,我只看到白屏。此外,如果我替换为“http://www.google.com”,一切正常。另外,我正在现场设备(无模拟器)上进行测试。关于为什么这不起作用的任何建议?

【问题讨论】:

  • 如果你在 webView 上设置了所有必要的权限并且如果使用了 webVwClient 上的所有必要权限,则应该加载...你需要调试 java 直到 webView 的 load() ... 然后将调试器转移到 chrome 开发工具

标签: java android webview raspberry-pi


【解决方案1】:

如果您使用的是 http 协议,请尝试将其添加到您的 android 清单中

android:usesCleartextTraffic="true"

对我有用

【讨论】:

  • 这个问题来自 2016 年,不需要。
【解决方案2】:
public void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);
        mWebView = (WebView)findViewById(R.id.webview);
        mWebView.clearCache(true);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl("http://10.0.2.2:8080/SampleWebServer/Welcome.html");
        //pass complete url 
       
}

【讨论】:

  • 请解释为什么它应该是完整的 url。在这种情况下使用浏览器和 WebView 之间是否有任何区别会很高兴。
【解决方案3】:

我遇到了和你一样的问题。我已经实现了加载本地IP,但至少需要30秒,同时像你一样白屏。它看起来像铬(webView)试图在互联网上找到IP,最后说:“哦,这是一个本地IP,让我们加载”。这很奇怪。我也一直在等待帮助。

【讨论】:

  • 好吧,我已经解决了我的问题。事实上,它不像你的,因为我试图在没有互联网连接的情况下连接本地网络中的本地服务器。我的问题是我的样式表中有一个外部引用(@import url("fonts.googleapis.com/css...)。这个愚蠢的事情花了我很多时间。我检查了你的代码,它就像我的代码一样。我忍不住你。运气!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多