Android解決WifiManager.removeNetwork()失敗--appシステムに保存されているwifiを削除する権限を付与

2712 ワード

まず、私たちのアンドロイドデバイスはrootを過ぎました.私たちのappはシステムappを作ります.
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)システム署名を行う.
  • ソースコードで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)アンドロイドデバイスにコピーする.
    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
    その他の可能なシナリオ
  • 保存されているwifiを削除するにはhookチェック権限の方法で実現できるかもしれませんか?私は長い間やっていたが,成功しなかった.
  • WiFiを削除するには、ファイル
  • を直接削除することもできます.
    /data/misc/wifi/wpa_supplicant.conf
    実現します.しかし残念ながら、私はTotal Commandでこのファイルを削除することができますが、コード削除では常に権限拒否を報告しています.つまりadb shellを使用して、suが入って削除しても権限が拒否されます.最後にあきらめる.