android 删除wifi失败,Android解决WifiManager.removeNetwork()失败--赋予app系统权限去删除保存的wifi...

首先,我们的安卓设备已经root过了,我们的app是要做成系统app的。

直接删除wifi会失败

一般的,删除保存的wifi代码是这样的

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

Listconfigs = wifiManager.getConfiguredNetworks();

for (WifiConfiguration config : configs) {

boolean result = wifiManager.removeNetwork(config.networkId);

forgetWifi(wifiManager, config.networkId);

removeWifi(wifiManager, config.networkId);

deleteWifiConfig();

LogUtil.log("remove network. networkId=%d, ssid=%s,result=%b", config.networkId, config.SSID, result);

}

removeNetwork这个方法点进去,可以看到谷歌这么说,

Applications are not allowed to remove networks created by other applications.

至于我们添加的网络为什么会变成别人的,这我还没搞明白,反正每次重装apk,之前保存的网络就删不掉了。

解决方案->把app变成系统app,并赋予system权限

步骤:

1) 修改清单文件

因为删除保存的wifi是要检查权限的,如果UID是systemUID,会直接通过权限检查。

2) 打一个包,app-debug.apk。

3) 进行系统签名。

在源码里下载或从我给的链接下载

platform.x509.pem、platform.pk8、signapk.jar

我的下载链接:

https://download.csdn.net/download/weixin_36001685/11827441

源码地址

https://www.androidos.net.cn/

文件位置

platform.x509.pem、platform.pk8:

…/build/target/product/security

signapk.jar:

…/out/host/linux-x86/framework

signapk源码路径:

…/build/tools/signapk

对app-debug.apk进行签名。签名命令

java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk

4) 拷贝到安卓设备里。

adb push D:\WorkSpace\app-debug-new.apk /mnt/sdcard

5) 打开安卓设备界面,打开有root权限的文件管理器,我用的是Total Commander,下载地址

https://download.csdn.net/download/weixin_36001685/11782914

6) 剪切/mnt/sdcard/app-debug.apk,粘贴到/system/app目录下。

7) 使用Total Commander赋予app-debug.apk权限744。

8) 重启安卓设备。

重启成功后可以看到app已经安装了。如果没有安装好,再用Total Commander进去看/system/app/app-debug.apk是否拥有744权限。

至此,该app可以为所欲为了。

系统签名参考

https://www.jianshu.com/p/47265c8899b5

其它可能的方案

删除保存的wifi或许可以通过hook检查权限的方法来实现?我弄了好久,没搞成功。

删除WiFi还可以通过直接删除文件

/data/misc/wifi/wpa_supplicant.conf

来实现。但是很遗憾,我通过Total Command可以删除该文件,但是通过代码删除却总是报错权限拒绝。即使用adb shell ,su进去删除也是权限拒绝。最后放弃。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值