重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
以MIUI系统为例,来说明一下限制Android手机程序联网步骤:
我们提供的服务有:网站设计、成都网站建设、微信公众号开发、网站优化、网站认证、临夏州ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的临夏州网站制作公司
1、打开手机系统中的“安全中心”应用,点击“网络助手”选项。
2、在网络助手页面,点击“联网控制”选项。
3、在应用程序列表中,点击控制应用联网开关即可控制数据联网或者是WLAN联网。
Android高版本使用Glide加载网络图片失败,OKhttp联网失败等
为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响。
因此在Android P 使用HttpUrlConnection进行http请求会出现以下异常
java.io.IOException: Cleartext HTTP traffic to **** not permitted
解决方法之一: 在AndroidManifest.xml配置文件的application标签中直接插入
android:usesCleartextTraffic="true"
android:usesCleartextTraffic 指示应用程序是否打算使用明文网络流量,例如明文HTTP。目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。
————————————————
相关参考链接:
用安卓系统自带的终端模拟器联网
这个需要用到安卓系统自带的终端模拟器,如果你虚拟机中的安卓是从谷歌上下的,那应该有终端模拟器,不过VM虚拟机要联网的前提是你用的是以太网才行,无线网无法虚拟的进入终端模拟器,首先输入ipa回车,看一下出来的选项里面有没有eth0,如果没有的话,那就是缺失驱动了,我也没办法了。如果有eth0那就好办了,输入su回车使终端模拟器获得root权限然后输入dhcpcdeth0使以太网自动取得IP最后一步,设定DNSServer,输入setpropnet.dns18.8.8.8然后你就可以用安卓自带的浏览器上网了
在android studio里面创建了android 11 模拟器发现不能连网(android 9以下可以联网),所以去了官网找原因
发现可以通过命令行的方式给模拟器手动指定要使用的 DNS 服务器地址,命令如下:
在android studio 控制台输入即可,Pixel_2_API_30是我创建模拟器的名字,设置dns为8.8.8.8,这是Google提供的一个公用免费的DNS地址(还有一个是114.114.114.114,效果一样)。然后模拟器就有网络了。
在这个过程中遇到的问题:
1.刚开始查了一些资料 大部分是通过adb shell - getprop (查看dns) -setprop(设置和自己电脑一样的dns)。我执行getprop的时候发现没有[net.dns1],原因好像是我的模拟器是android 11系统,系统偏高。所以放弃了这种方法。
2.在执行emulator -avd Pixel_2_API_30的时候 发现了一个报错:Missing emulator engine program for 'x86' CPU. 解决办法:可以把 emulator 文件夹配置到环境变量中,注意环境变量移动到 tools 的上面。
一般情况下通过代才能连接到外网的网络在使用android 模拟器是连接不上网的,虽然在模拟器里面设置了代理服务器的IP和端口后,可以模拟器的浏览器可以连上网了,(如何在模拟其中设置网络代理请参看这里
但是自己开发的程序还是连接不上去,在这种情况下可以通过下面的代码来实现应用程序的网络连接!
Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress("10.0.0.172",80));
HttpURLConnection connection=(HttpURLConnection) url.openConnection(proxy);
这是java.net包的联网方式。还可以用Apache的HttpClient连接网络。
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("10.0.0.172", 80);
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);