XPOSED源码研究之XposedInstaller(1)从manifest开始XposedApp

来源:互联网 发布:追信魔盒在线制作软件 编辑:程序博客网 时间:2024/05/29 17:00
分析最简单的开始方式就是从manifest入手,找到application为:XposedApp,主启动类为:WelcomeActivity。
这一节先从XposedApp开始分析,后一节分析WelcomeActivity。

XposedApp实现了ActivityLifecycleCallbacks接口,主要用以在activity的生命周期发生变化时能收到相应的通知。
主要是在onCreate中进行一些初始化操作,一些封装的函数和实现方法比较值得学习和借鉴。

创建并设置文件权限:FileUtils.setPermissions
private void createDirectories() { mkdirAndChmod("bin", 00771); mkdirAndChmod("conf", 00771); mkdirAndChmod("log", 00771); }

private void mkdirAndChmod(String dir, int permissions) { dir = BASE_DIR + dir; newFile(dir).mkdir(); FileUtils.setPermissions(dir, permissions, -1, -1); }
在主线程中运行线程:
public static void runOnUiThread(Runnable action) { if (Thread.currentThread() !=mUiThread) { mMainHandler.post(action); } else { action.run(); } }
mUiThread在onCreate中初始化为主线程:mUiThread = Thread.currentThread();
后面判断当前线程是否是主线程,如果不是的话调用post方式,在子线程中利用主线程的Handler的post()方法,更改UI这个在子线程中sendMessage()原理和形式都很类似,
具体参考:Handler详解系列(五)——Handler的post()方法详解

静态函数getActiveXposedVersion提供了类似“接口”的功能,在动态运行时由XposedBridge进行hook掉返回当前xposed的版本号。

checkCallingOrSelfPermission(Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED
判断自己或者其它调用者是否有 permission 权限 。

setProgressBarIndeterminateVisibility显示不带进度的进度条,具体示例参考:android学习笔记32:标题栏进度条。
0 0
原创粉丝点击