1

我有这个代码:

     @Override
public void onCreate(Bundle savedInstanceState) {
    try {
        super.onCreate(savedInstanceState);
        InetAddress ip;
        mWebview  = new WebView(this);
        mWebview.getSettings().setJavaScriptEnabled(true);
        final Activity activity = this;
        String ipv4add;
        mWebview.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
            }
        });
        ip = InetAddress.getLocalHost();
        ipv4add = ip.getHostAddress().toString();
        System.out.println(ipv4add);
        mWebview .loadUrl(ipv4add+"/Lab4/Task1/index.php");
            mWebview.getSettings().setLoadsImagesAutomatically(true);
            mWebview.getSettings().setJavaScriptEnabled(true);
            mWebview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        setContentView(mWebview );
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }

所以它首先要做的是:它应该获取手机应该连接到的服务器 ip,然后将其插入到 URL 中,以便手机可以连接到本地服务器并访问我的 php 文件。但是,当我将其启动到我的 android 手机中时,它就会崩溃。为什么会这样做?希望你们能帮我解决这个问题。

4

1 回答 1

0

您不必动态请求服务器的 IP。还是你?您可以做的是获取服务器的静态 IP 地址(通过检查服务器的 IP 配置)并更改为

mWebview .loadUrl("http://your.ip.address.here/Lab4/Task1/index.php");

并删除你的

ip = InetAddress.getLocalHost();
ipv4add = ip.getHostAddress().toString();

一旦您准备好部署到现场,192.168.1.x必须将其替换为您的现场域,例如

mWebview .loadUrl("http://www.yourdomain.com/Lab4/Task1/index.php");

另外,不要在清单中忘记这一点:

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

于 2016-10-09T12:05:14.870 回答