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

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

wifiManager的简单调试相关推荐

  1. GTSAM在windows下安装,配置,简单调试

    GTSAM在windows下安装,配置,简单调试 BOOST安装配置 GTSAM安装配置 安装 配置 GTSAM简单调试 代码分析1 代码分析2 模型分析和结果展示 BOOST安装配置 链接: boo ...

  2. python的简单调试

    python的简单调试 记得以前上大学时初次学C语言,常常是写代码十几分钟,改bug数小时,常常因为变量定义,分号,指针各种问题搞得头皮发麻,当时为了物理实验复杂计算编程序解决(那时候还不会matla ...

  3. Pycharm的运行和简单调试

    我这里已经简单的创建了一个文件,为了浅显易懂,这里程序写的比较简单 1.      运行程序 首先,找到编辑窗口上面有一个向下方向的灰色箭头,点击它 点击之后,选择第一个选项edit Configur ...

  4. OpenGL基础56:OpenGL简单调试

    图形编程想要调试并不是一件容易的事,有的时候渲染出全黑的结果基本上只能凭经验来查错,特别是对于着色器,断点日志都是无效的,因此想办法掌握一些调试方法还是有必要的,不然找错误的源头可能真的会非常困难 一 ...

  5. perl脚本的简单调试方法

    初学perl语言,最先接触的不是它的语法,而是它的调试方法,当时是由于一个perl script生成的html页面无法正常显示,让我找出问题的原因,然后修复,当时是第一次接触perl,完全没有任何了解 ...

  6. 初识CCS,创建工程、选择芯片、简单调试及烧录

    本篇文章,主要面向初次接触CCS的朋友,你可以学到: 如何创建工程及选择芯片 如何烧录程序 如何调试程序 如何创建工程及选择芯片 点击File->New->CCS Project创建工程 ...

  7. Vue之vue-cli安装与简单调试

    一.安装nodejs https://nodejs.org/en/download/ nodejs简单使用 node -v 查看版本 npm -v 查看对应npm版本 如果npm版本太低小于 4.0 ...

  8. linux可以生成pdb调试信息吗,Linux通过使用pdb简单调试python计划

    python自带的调试工具库:pdb # -*- coding:utf-8 -*- def func(num): s = num * 10 return s if __name__ == '__mai ...

  9. NodeJs两个简单调试技巧

    today, 我们的话题作文是nodejs,我尝试对它的描述是:似曾相似,但它又不一样的存在着.百花齐放的it世界里,以独特身姿绽放的美丽更容易吸引人.也许只是不了解,也许时间会给出答案,nodejs ...

最新文章

  1. 大数据会说话也“慧”说话
  2. 用树莓派获取天气状况
  3. mybaits二十三:二级缓存
  4. 18岁学计算机专业好不好,我18岁,学计算机编程,请问有没有什么书或者方法可以提高记忆力的?...
  5. ASP.NET MVC应用程序实现下载功能
  6. DocKer linux Centos 安装DocKer 只需要十步
  7. [网摘]关于产品运营
  8. Java的精妙之处,包括基元和变量参数数组
  9. 通过运行示例从WSO2 ESB开始
  10. 前端学习(2892):如何异步请求封装
  11. sqlserver字符串多行合并为一行
  12. 【dp】URAL-1018
  13. 维特比算法Viterbi Algorithm
  14. Linux查询pg数据库账号密码,PostgreSQL登录数据库
  15. 03:计算书费【一维数组】
  16. 自驾游你会经常自己做饭吗?
  17. L2-001. 紧急救援-PAT团体程序设计天梯赛GPLT(Dijkstra算法)
  18. Gmail:如何跟踪邮件阅读状态
  19. 3分钟教你如何在Word里快速制作单斜线和多斜线表头
  20. 求字符串的全排列的递归实现(对字符串中有相同字符也适用)

热门文章

  1. NGUI_2.6.3_(3D视图ScrollView)
  2. AndroidStudio_安卓原生开发_全局异常处理_并记录系统错误日志---Android原生开发工作笔记138
  3. MyCat分布式数据库集群架构工作笔记0013---高可用_Mycat双主双从复制配置上
  4. Netty工作笔记0007---NIO的三大核心组件关系
  5. SpringCloud工作笔记085---SpringBoot项目中防止跨站脚本攻击功能添加
  6. std::set, std::list, std::vector在erase的区别
  7. 嵌入式操作系统内核原理和开发(多线程轮转)
  8. 多线程的那点儿事(之原子锁)
  9. 计算机专业想从事考古,考古专业一月工资多少 是冷门专业吗
  10. 吉林省职称2017计算机免试,[吉林省职称评定条件]吉林省调整职称评审政策:这些人员可免试外语.doc...