Android解決WifiManager.removeNetwork()失敗--appシステムに保存されているwifiを削除する権限を付与
2712 ワード
まず、私たちのアンドロイドデバイスはrootを過ぎました.私たちのappはシステムappを作ります.
wifiを直接削除すると失敗します
一般的に、保存されているwifiコードを削除するのはこうです
removeNetworkという方法でポイントを入れると、グーグルがそう言っているのが見えます.
私たちが追加したネットワークがなぜ他の人になったのか、私はまだ理解していません.どうせapkを再インストールするたびに、前に保存したネットワークは削除できません.
ソリューション->appをシステムappに変更し、system権限を付与
手順:
1)インベントリファイルの修正
保存されているwifiを削除するには権限をチェックする必要があるので、UIDがsystemUIDであれば、直接権限チェックを通過します.
2)かばんを1つ打つ.apk.
3)システム署名を行う.ソースコードでplatformをダウンロードするか、私がくれたリンクからダウンロードします.x509.pem、platform.pk8、signapk.JArマイダウンロードリンク: https://download.csdn.net/download/weixin_36001685/11827441ソースアドレスhttps://www.androidos.net.cn/
ファイルの場所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)アンドロイドデバイスにコピーする.
5)Androidデバイスインタフェースを開き、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が入って削除しても権限が拒否されます.最後にあきらめる.
wifiを直接削除すると失敗します
一般的に、保存されているwifiコードを削除するのはこうです
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
List configs = 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)かばんを1つ打つ.apk.
3)システム署名を行う.
ファイルの場所x509.pem、platform.pk8:
…/build/target/product/security
signapk.jar:
…/out/host/linux-x86/framework
Signapkソースパス:
…/build/tools/signapk
4)アンドロイドデバイスにコピーする.
adb push D:\WorkSpace\app-debug-new.apk /mnt/sdcard
5)Androidデバイスインタフェースを開き、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
その他の可能なシナリオ
/data/misc/wifi/wpa_supplicant.conf
実現します.しかし残念ながら、私はTotal Commandでこのファイルを削除することができますが、コード削除では常に権限拒否を報告しています.つまりadb shellを使用して、suが入って削除しても権限が拒否されます.最後にあきらめる.