wifiManager的简单调试
为什么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的简单调试相关推荐
- GTSAM在windows下安装,配置,简单调试
GTSAM在windows下安装,配置,简单调试 BOOST安装配置 GTSAM安装配置 安装 配置 GTSAM简单调试 代码分析1 代码分析2 模型分析和结果展示 BOOST安装配置 链接: boo ...
- python的简单调试
python的简单调试 记得以前上大学时初次学C语言,常常是写代码十几分钟,改bug数小时,常常因为变量定义,分号,指针各种问题搞得头皮发麻,当时为了物理实验复杂计算编程序解决(那时候还不会matla ...
- Pycharm的运行和简单调试
我这里已经简单的创建了一个文件,为了浅显易懂,这里程序写的比较简单 1. 运行程序 首先,找到编辑窗口上面有一个向下方向的灰色箭头,点击它 点击之后,选择第一个选项edit Configur ...
- OpenGL基础56:OpenGL简单调试
图形编程想要调试并不是一件容易的事,有的时候渲染出全黑的结果基本上只能凭经验来查错,特别是对于着色器,断点日志都是无效的,因此想办法掌握一些调试方法还是有必要的,不然找错误的源头可能真的会非常困难 一 ...
- perl脚本的简单调试方法
初学perl语言,最先接触的不是它的语法,而是它的调试方法,当时是由于一个perl script生成的html页面无法正常显示,让我找出问题的原因,然后修复,当时是第一次接触perl,完全没有任何了解 ...
- 初识CCS,创建工程、选择芯片、简单调试及烧录
本篇文章,主要面向初次接触CCS的朋友,你可以学到: 如何创建工程及选择芯片 如何烧录程序 如何调试程序 如何创建工程及选择芯片 点击File->New->CCS Project创建工程 ...
- Vue之vue-cli安装与简单调试
一.安装nodejs https://nodejs.org/en/download/ nodejs简单使用 node -v 查看版本 npm -v 查看对应npm版本 如果npm版本太低小于 4.0 ...
- linux可以生成pdb调试信息吗,Linux通过使用pdb简单调试python计划
python自带的调试工具库:pdb # -*- coding:utf-8 -*- def func(num): s = num * 10 return s if __name__ == '__mai ...
- NodeJs两个简单调试技巧
today, 我们的话题作文是nodejs,我尝试对它的描述是:似曾相似,但它又不一样的存在着.百花齐放的it世界里,以独特身姿绽放的美丽更容易吸引人.也许只是不了解,也许时间会给出答案,nodejs ...
最新文章
- 大数据会说话也“慧”说话
- 用树莓派获取天气状况
- mybaits二十三:二级缓存
- 18岁学计算机专业好不好,我18岁,学计算机编程,请问有没有什么书或者方法可以提高记忆力的?...
- ASP.NET MVC应用程序实现下载功能
- DocKer linux Centos 安装DocKer 只需要十步
- [网摘]关于产品运营
- Java的精妙之处,包括基元和变量参数数组
- 通过运行示例从WSO2 ESB开始
- 前端学习(2892):如何异步请求封装
- sqlserver字符串多行合并为一行
- 【dp】URAL-1018
- 维特比算法Viterbi Algorithm
- Linux查询pg数据库账号密码,PostgreSQL登录数据库
- 03:计算书费【一维数组】
- 自驾游你会经常自己做饭吗?
- L2-001. 紧急救援-PAT团体程序设计天梯赛GPLT(Dijkstra算法)
- Gmail:如何跟踪邮件阅读状态
- 3分钟教你如何在Word里快速制作单斜线和多斜线表头
- 求字符串的全排列的递归实现(对字符串中有相同字符也适用)
热门文章
- NGUI_2.6.3_(3D视图ScrollView)
- AndroidStudio_安卓原生开发_全局异常处理_并记录系统错误日志---Android原生开发工作笔记138
- MyCat分布式数据库集群架构工作笔记0013---高可用_Mycat双主双从复制配置上
- Netty工作笔记0007---NIO的三大核心组件关系
- SpringCloud工作笔记085---SpringBoot项目中防止跨站脚本攻击功能添加
- std::set, std::list, std::vector在erase的区别
- 嵌入式操作系统内核原理和开发(多线程轮转)
- 多线程的那点儿事(之原子锁)
- 计算机专业想从事考古,考古专业一月工资多少 是冷门专业吗
- 吉林省职称2017计算机免试,[吉林省职称评定条件]吉林省调整职称评审政策:这些人员可免试外语.doc...