为什么这个关掉还是会绝地求生跳出来窗口,还不能上网了,求解决

再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
威锋网7月10日消锋网7月10日消息,《植物大战僵尸2》 如今...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
您需要通过验证再能继续浏览 3秒后开始验证
威锋旗下产品
Hi~我是威威!
 粤公网安备 11号
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!高级会员, 积分 978, 距离下一级还需 622 积分
主题帖子社区积分
机&&&&&&&型:魅族 PRO 5版&&&&&&&本:6.1.0.0A总签到数:8
轻松注册,让你轻松玩转Flyme社区
才可以下载或查看,没有帐号?
本帖最后由 蓝之血梦 于
23:15 编辑
其实相比4.5下Bluetooth PAN的bug,我真的一点都不在意系统卡还是不卡。蓝牙个人局域网(Bluetooth PAN)的连接是我的命脉,然而魅族跳票两个月后发布的Flyme 4.5,却竟然把我的命脉断了!具体表现为,你拿另外一台手机开启蓝牙共享网络,然后拿刷了Flyme4.5的mx3跟其配对,接着在mx3的蓝牙设备列表里面连接另外那台手机,你会发现点选后显示“已连接热点”,系统通知栏上也显示蓝牙已连接的状态,然而系统并没有拉起蓝牙热点的网络通路,如果这个时候把wifi和移动数据全部关闭,那通知栏上实时网速根本不会有显示,就跟你关闭了所有的数据连接的时候一样。让我恼火的是,从六月份到最新的4.5.6A稳定版,却一直没有修复这个bug!过中我上论坛反映过很多次,却一直没有得到解决。到稳定版的时候,我甚至清除数据重新刷一遍来排除个人原因,却发现依然不行!所以,是系统bug无疑!
此时此刻,我心中有一万头草泥马在奔腾。既然攻城狮不来弄,那我自己来弄吧!
--------------------------------------------
首先“adb shell”连接mx3,输入:
busybox ifconfig查看一下bt-pan的网络接口情况:
QQ截图42.png (5.43 KB, 下载次数: 0)
21:12 上传
bt-pan的网络接口是正常创建了的!所以说明很显然不是驱动问题,而是应用层面的问题!很有可能可以通过手段修复!
可以看到,这个时候的bt-pan并没有分配到任何的地址。我很奇怪,使用“adb logcat”抓取了一下日志,发现连接Bluetooth PAN的过程中关于蓝牙的有两条很重要的错误信息:
D/NetUtils( 3817): dhcp_do_request failed : bt-pan (new)
E/BluetoothTetheringNetworkFactory( 3817): DHCP request error:Timed out waiting for dhcpcd to start(在这里先提及一下,上面日志中的3817是当前我系统中“蓝牙共享”app,也就是包名为com.android.bluetooth的app的进程ID。)
这里可以明显看到,果然是dhcpcd没跑起来,所以就获取不到ip地址了!于是整个PAN过程就无法继续下去了!
--------------------------------------------
既然知道问题在哪里,就尝试解决吧!先尝试手动能不能把dhcpcd命令跑起来,给bt-pan接口分配到网络地址?
直接在命令行里敲:
dhcpcd bt-pan看到命令立即就退出了:
QQ截图03.png (1.05 KB, 下载次数: 0)
21:27 上传
我不甘心,进入su模式后,再试一次上述命令,虽然依然没有什么反馈,得到如下:
QQ截图10.png (989 Bytes, 下载次数: 0)
21:30 上传
但注意!这个时候,dhcpcd命令可是卡了好久才终止的!说明有戏!再输入:
busybox ifconfig奇迹出现了!惊喜地得到了如下的结果:
QQ截图26.png (6.49 KB, 下载次数: 0)
ifconfig 2
21:32 上传
可以看到相比之前,多了一行ip地址的显示,说明这个时候,这个提供蓝牙PAN服务的bt-pan网络接口已经完全可用了!
但是依然还不能上网,原因很简单,有一个可用的网络接口还不够,我们还需要让系统知道可以从这里访问外网。继续在命令行输入:
ip rule show得到这样的一张匹配规则表:
QQ截图17.png (7.24 KB, 下载次数: 0)
ip rule show
21:38 上传
(在这里我为了逻辑完整性,需要叙述一下,在Android Lollipop之后,系统的路由表并不能再简单实用route命令来查看了。系统不再使用单一的一张默认路由表,所以route命令已经不好用。系统会根据不同的出口创建不同的路由表和规则。这张图是在我关闭wifi、连着移动2G的情形下得到的,所以这个图显示的意思是,当前系统还是固执地让我按照rmnet0这个路由表的指示出去。而rmnet0的路由表对应的,就是2G数据网络出口。)
这个时候,我的一个自然反应当然是:这还不简单!直接把路由表修改一下,指示系统走bt-pan出去不就完了?
说干就干,首先继续把移动2G数据网络关掉,这个时候运行上述命令得到的匹配规则是这样的:
QQ截图18.png (4.98 KB, 下载次数: 0)
ip rule show 2
21:46 上传
对比上图,显然证明了之前的说法(rmnet0是对于2G移动数据的网络出口的)。
但接下来的实验发现,通过简单的复制rmnet0的格式来添加类似rmnet0的但是指向bt-pan出口的ip rule和ip route,并不能让系统完美地走bt-pan出口出去。到最后我发现,在这样的情况下,微信刷朋友圈的时候就只能刷出文字,并不能刷出图片,而且浏览器根本不能使用,一直提示无可用网络连接。
其实道理也很简单,其实系统正常上网,除了需要创建对应的路由规则以外,还要在app层面注册网络接口,告诉诸位app妃子“嘿我在这呢大家快来上我啊”云云,这样其他app才能真正正常识别网络状态。而现在的情况是,我们关闭了wifi,关闭了数据连接,但蓝牙的PAN服务并未能正常注册自己的网络接口并告知大家自己是可用的(之前就分析过了,蓝牙连接在遇到dhcpcd的错误的时候就已经终止了执行,这时候,空有蓝牙层面的连接,但还未拉起网络通路,注册好自身的网络接口)。所以即使把路由表配好了,还是会有各种问题。
这个错误的路径,就不再详细贴出截图了,交代一下,下面继续进入主题。
其实还是有一个简单的办法可以解决的,回到之前有打开2G数据连接的时候,这个时候,系统不是正常识别自己有一个可用的网络接口吗?而且不是正好有个rmnet0路由表可以用吗?那我们直接修改这个rmnet0路由表,把其篡改为指向bt-pan作为出口,不就一了百了了吗?
好的,那我们先来看看当前的rmnet0路由表的情况,输入命令:
ip route show table rmnet0得到如下图的信息:
QQ截图46.png (2.08 KB, 下载次数: 0)
22:01 上传
这样的默认路由指向,显然是移动GPRS数据出口……
然后,重头戏来了!连着输入如下指令:
ip route del default table rmnet0
ip route add 192.168.44.0/24 dev bt-pan proto static table rmnet0
ip route add default via 192.168.44.1 dev bt-pan proto static table rmnet0再查看一下rmnet0路由表的情况,如果不出意外,应该可见:
QQ截图50.png (2.79 KB, 下载次数: 0)
ip route 2
22:07 上传
如果到了这里,那么恭喜你!你已经修复了Bluetooth PAN服务的问题!现在你再次使用手机上网,可以发现你已经是通过蓝牙PAN访问外网了!如我的截图:
QQ截图18.png (97.09 KB, 下载次数: 0)
22:14 上传
首先,百度显示我的ip是电信的ip,这显然符合我的蓝牙热点是使用电信手机开的这一点。其次,可以看到,蓝牙是已连接状态,而且移动2G的Edge标识没有消失,而且速度当前有20K/s,但“E”的网络标识却没有任何上行下行的数据通过提示!这只能说明一个问题,虽然我的移动2G数据连接开着,虽然我上网上的很爽,但却并不是在走移动2G的通路!
--------------------------------------------
好的,上面是详细的解决过程,对于想要同样解决这个问题的朋友,为了方便,你可以一次性把下面脚本:
#!system/bin/sh
dhcpcd bt-pan
ip route del default table rmnet0
ip route add 192.168.44.0/24 dev bt-pan proto static table rmnet0
ip route add default via 192.168.44.1 dev bt-pan proto&&static table rmnet0通过RE管理器,保存到新建的“/system/bt.sh”这个文本文件当中去,并赋予文本文件以执行权限。
到日后你需要使用蓝牙PAN服务时:
首先,关闭wifi;
接着,打开移动数据连接(老实说我并没见过3G数据连接的路由表,如果不是rmnet0还需自行更改);
然后,打开终端模拟器;
再者,输入“su”获取root权限;
最后,输入“/system/bt.sh”,静候脚本执行结束,若无任何错误输出,即说明执行成功。
具体验证办法参照我上面的浏览器截图。
--------------------------------------------
最后,多说几句:
其实,根据我上面的分析,很显然这个问题对于攻城狮来说是很容易就解决的。
攻城狮只需要长点心,在“安全中心”app里给“蓝牙共享”(com.android.bluetooth)app添加一下“允许其以root权限运行”就可以了。想必大家都知道,即使对于那些未root过的安卓设备,系统依然是有“su”程序存在在系统目录当中的。
这是为什么呢?因为系统程序,大多还都需要使用root权限来进行一些高权限的操作(比如本例中的“蓝牙共享”app)。
所以,那些未root过的安卓设备,并不代表这个设备并没有root权限可供使用(如果是这样,那这个安卓机连正常的运行都不能保证)。而应该说,root权限,只开放给了必要的系统内置程序,并没有开放给任何一个用户程序罢了。而所谓rooted的设备,其实只是通过开放或者破解的形式,让“su”程序可以让用户程序也可以获得root权限这样。
在本例中,我们可以推测,“蓝牙共享”app出现“dhcpcd failed to start”的原因,其实显然是因为“蓝牙共享”app本身获取不到root权限,而是在普通权限下运行导致的。这里有几个方法证明:首先,我自己跑“dhcpcd”命令就完美无bug跑通了,这说明dhcpcd程序并无问题;而且可以发现,“dhcpcd”命令只可以在超级用户权限下面跑,再根据前面提到的进程ID可以看出,这显然是因为“蓝牙共享”app本身没有获得root权限导致的。
到这里,我再插一句,大家可以发现Flyme 4.5使用wifi连接路由器并没有任何问题,可以正常获取到网络地址是吧?其实wifi连接路由器在网络接口的层面进行的操作跟本例的蓝牙连接PAN服务是差不多的,一样需要运行类似于“dhcpcd wlan0”这样的一步。而这里可以正常通过,那是因为这个命令并不由“蓝牙共享”这个app来执行,而是另外一个程序来执行。同时根据“dhcpcd”命令要求超级用户权限的条件可知,那个设置程序肯定是被“安全中心”赋予了超级用户执行的权利的!
那为何唯独“蓝牙共享”app没有被列入白名单呢?这个,就得问魅族攻城狮了。
其实我在这里敢打包票,攻城狮只需要在“安全中心”app里面设置一下“蓝牙共享”app,把它加入“运行其以root权限运行”的白名单就可以完美解决问题了。别到时跳出来一大堆理由,例如“哪里有这个帖子说的这么轻松,别侮辱我们攻城狮的智商好吗?”。
为什么我敢打包票呢:
/platform/packages/apps/Bluetooth/+/master/src/com/android/bluetooth/pan/BluetoothTetheringNetworkFactory.java
签名你看我像什么,我就是什么。

我要回帖

更多关于 绝地求生鼠标跳出来 的文章

 

随机推荐