在 Android 应用中自定义域名到 IP 的映射

5
我有一个Web应用程序,该应用程序在Android WebView中呈现。当用户单击按钮时,URLhttp://www.mywebapp.com/被呈现。

是否可能将此域映射到我的本地网络中的IP地址,仅适用于我的android应用程序?

例如,

192.168.33.10 mywebapp.com

由于我自己编译Android应用程序,所以希望这个问题可能有一些基于代码的解决方案。

拒绝的方法:

  1. Root Android设备以编辑其hosts文件。我正在尝试在办公室的共享测试设备上进行此操作。

  2. 在网络上设置自定义DNS服务器,并让Android手机指向它-这是一个全局更改-无论使用什么解决方案,它都应仅影响android应用程序的行为,而不会影响其他任何事情。并且,我没有对办公室WiFi有任何控制/权限。

2个回答

3
我认为自定义的 WebViewClient 可以解决问题。
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.example.com")) {
            view.loadUrl(myIp);
        }
        // Else the WebView handles it as normal
        return false; // Indicates the WebView is handling the loading
    }
}

来自https://developer.android.com/guide/webapps/webview.html

这是一个关于Android应用程序中WebView的指南。WebView是一种可以在Android应用程序中嵌入网页的控件。通过使用WebView,你可以在应用程序中轻松地显示网页内容,甚至可以与JavaScript进行交互。


1
你可以使用安卓模拟器来实现这个功能。
步骤1:下载带有X-86系统镜像的模拟器(重要),不要选择Google Play API的镜像enter image description here 步骤2:一旦模拟器设置好了,在终端中运行以下命令以可写模式打开模拟器。
emulator -avd <Your_emulator_name> -partition-size 280 -writable-system

步骤三。打开模拟器后,打开一个新终端并运行此命令下载模拟器的主机文件以进行更改。

 adb pull /system/etc/hosts <Your_system_path_to_download_host_file. Example /home/bharath/Desktop/newHost>

它将在桌面上创建一个名为newHost的新文件夹,并将主机文件存储在其中。
您需要在文本编辑器中打开此文件并进行更改(以添加所需的IP主机条目)。

I added a sample host name (dev.something.com) pointing to 192.168.21.1

步骤4。现在我们需要在Android模拟器中替换这个已编辑的主机文件。
为此,我们需要运行以下命令。
4.i. 检查模拟器是否连接。
   adb devices

它将返回连接的设备/模拟器列表。
4.ii. 我们需要获取 root 权限才能写入文件。
   adb root

它会返回重新启动adbd为root的消息。
4.iii. 接下来,我们必须重新挂载系统以写入文件。
   adb remount

它将返回重新挂载成功的消息。
4.iv. 接下来,我们需要将编辑后的文件推送到安卓模拟器中。
   adb push <your edited host file path.Example /home/PFIN/bharath.shet/Desktop/newHost/hosts> /system/etc/hosts

它将返回文件大小

步骤5. 为了验证主机更改,您可以在模拟器中下载终端应用程序并使用ping命令查看变化。

 ping dev.something.com

它将ping到IP 192.168.21.1


我认为这是最佳解决方案。您不需要任何其他网络设置等。 - Oğuzhan KURNUÇ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接