我有一个在webviewview中呈现的webapp。当用户单击按钮时,将呈现URL http://www.mywebapp.com/。
是否可以将此域映射到本地网络中的IP,仅用于我的Android应用程序?
类似的东西,
192.168.33.10 mywebapp.com
由于我自己编译Android应用程序,我希望可能有一些基于代码的解决方案来解决这个问题。
拒绝方法:
植根Android设备以编辑其hosts
文件。我正在尝试使用我办公室中的共享测试设备。
在网络上设置自定义DNS服务器并让android手机指向它 - 这是一个全局变化 - 无论使用什么解决方案,它应该只影响Android应用程序的行为而不是其他任何东西。此外,我对办公室wifi没有任何控制/权限。
答案 0 :(得分:1)
您可以使用android模拟器来实现
第1步。下载带有X-86系统映像的模拟器(重要)。不要选择Google Play API的映像
步骤2。设置好仿真器后,打开终端并运行此命令以可写模式打开仿真器。
emulator -avd <Your_emulator_name> -partition-size 280 -writable-system
步骤3.打开模拟器后。打开一个新终端,然后运行此命令以下载模拟器的主机文件以进行更改。
adb pull /system/etc/hosts <Your_system_path_to_download_host_file. Example /home/bharath/Desktop/newHost>
它将在桌面上创建一个名为newHost的新文件夹,并将主机文件存储在其中。
您必须在文本编辑器中打开此文件并进行更改(以添加所需的IP主机条目)
第4步。现在,我们必须在android仿真器中替换此已编辑的主机文件。
为此,我们必须运行这些命令。
4.i。检查是否已连接模拟器
adb devices
它将返回已连接的设备/仿真器列表。
4.ii。我们必须拥有root权限才能写入文件。
adb root
它将返回以root身份重新启动adbd的消息
4.iii。接下来,我们必须重新安装系统以向其中写入文件
adb remount
重新安装成功后,它将返回消息。
4.iv。接下来,我们必须将编辑后的文件推送到android仿真器中
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
答案 1 :(得分:0)
我认为自定义WebViewClient
可以解决问题。
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());
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
}
}