如何将Android Web App连接到USB连接的Android设备上的Django开发服务器
如何让真实Android设备的WebView访问本地Django服务
我之前刚好遇到过一模一样的需求,折腾了一会儿搞定了,给你整理下关键步骤,照着来基本没问题:
1. 让Django服务允许局域网访问
默认情况下,Django的runserver只绑定127.0.0.1,也就是只有本机能访问。要让同一局域网的Android设备能连上,得改成绑定所有网卡:
python manage.py runserver 0.0.0.0:8000
解释下:0.0.0.0表示允许通过电脑的任何网卡(包括局域网网卡)访问Django服务,端口还是用8000就行。
2. 获取你的电脑局域网IP地址
Android设备要访问的不是127.0.0.1(那是设备自己的本地地址),而是你电脑在局域网里的真实IP:
- Windows:打开命令提示符,输入
ipconfig,找到「以太网适配器 WLAN」或「以太网」下的IPv4地址,比如192.168.1.105 - Mac/Linux:打开终端,输入
ifconfig(或ip addr),找到对应网卡的inet字段,比如192.168.3.2
3. 配置Android项目的网络权限和明文访问
3.1 添加网络权限
在AndroidManifest.xml里,<application>标签外面加上:
<uses-permission android:name="android.permission.INTERNET" />
这是WebView访问网络必须的权限。
3.2 允许明文HTTP访问(Android 9+)
从Android 9(API 28)开始,系统默认禁止App访问明文HTTP地址(Django默认是HTTP)。解决方法二选一:
- 方法一:在
AndroidManifest.xml的<application>标签里添加属性:android:usesCleartextTraffic="true" - 方法二:给Django配置HTTPS(相对麻烦,适合正式环境,测试阶段用方法一就行)
4. 编写WebView加载代码
在你的Activity里,配置WebView并加载电脑的局域网IP地址:
WebView webView = findViewById(R.id.webview); // 开启JavaScript支持(如果你的Django页面用到JS的话,可选) webView.getSettings().setJavaScriptEnabled(true); // 设置WebViewClient,避免跳转系统浏览器 webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request.getUrl().toString()); return true; } }); // 替换成你自己的电脑局域网IP webView.loadUrl("http://192.168.1.105:8000");
5. 排查可能的坑
- 防火墙拦截:电脑的防火墙可能会阻止Android设备访问8000端口。你需要在防火墙里添加入站规则,允许
8000端口的TCP连接,或者直接允许Python程序的网络访问权限。 - 局域网连接问题:确保Android设备和电脑连接的是同一个WiFi(或有线局域网),可以先在Android设备的自带浏览器里访问
http://你的电脑IP:8000,如果能打开Django页面,说明网络没问题,再用WebView加载就肯定能成。
内容的提问来源于stack exchange,提问作者Redgren Grumbholdt




