热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

wifiManager的简单调试

为什么80%的码农都做不了架构师?log内容:setWifiEnabled:truepid1556,uid1000看这log,基本就

为什么80%的码农都做不了架构师?>>>   hot3.png

log内容:setWifiEnabled:true pid=1556,uid=1000

看这log,基本就是应用程序中调用了wifiManager.setWifiEnabled(true),去framework中查找去吧。

         frameworks/services/java/com/android/server/wifi/WifiService.java

这里查看到LOG输出的地方:

public synchronized boolean setWifiEnabled(boolean enable) {
        enforceChangePermission();
        Slog.d(TAG, "setWifiEnabled: " + enable + " pid=" + Binder.getCallingPid()
                    + ", uid=" + Binder.getCallingUid());
        if (DBG) {
            Slog.e(TAG, "Invoking mWifiStateMachine.setWifiEnabled\n");
        }

        /*
        * Caller might not have WRITE_SECURE_SETTINGS,
        * only CHANGE_WIFI_STATE is enforced
        */

        long ident = Binder.clearCallingIdentity();
        try {
            if (! mSettingsStore.handleWifiToggled(enable)) {
                // Nothing to do if wifi cannot be toggled
                return true;
            }
        } finally {
            Binder.restoreCallingIdentity(ident);
        }

        mWifiController.sendMessage(CMD_WIFI_TOGGLED);
        return true;
    }

        当前不需要注意他是如何实现的,我们的目的获取到入口应用的包名,在WifiService.java中扫一眼,没看到啥能下手的地方。转眼就去了WifiManager.java里面瞅瞅:

     public WifiManager(Context context, IWifiManager service) {

    好了,看到这里我想大家就豁然开朗了吧。

    我们可以拿context做好多事情,譬如getPackageName()、getPackageName()和getPackageName()~

     接下来就在下文的setWifiEnabled()中把获取的包名输出。重新编译了下framework,将生成的framework2.jar、framework2jar、ext.jar push 到手机里面,并自己写了一个wifi开关的小例子查看LOG,简单的改动就实现了谁调这接口就输出谁的包名。

手动点击设置里面的wifi开关也能获取到包名哦!

05-19 14:08:01.102 E/WifiManager( 1333): the_package name is com.android.settings
05-19 14:08:01.102 D/WifiService(  989): setWifiEnabled: false pid=1333, uid=1000

 

                                                                    完!


转载于:https://my.oschina.net/shaula/blog/678112


推荐阅读
author-avatar
faithKOBE
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有