有:
packageManager.getPackageInfo(packageName, 0).firstInstallTime;
我们如何修改它?也许使用 root/xposed 或以编程方式
Xposed 框架是完美的工具!
Xposed Framework 可以“挂钩”任何函数调用以在该函数之前/之后执行您选择的任何代码 - 或完全替换该函数(注意 - 它只能挂钩函数,而不是字段)。
因此,在您的情况下,您想要挂钩packageManager.getPackageInfo(packageName, 0)
并更改firstInstallTime
上述函数返回的对象中的字段。
但是,packageManager
是一个抽象类,getPackageInfo()
是一个抽象函数——而xposed不能hook抽象函数。您需要做的是挂钩该类实际实现该功能的类。
该类是ApplicationPackageManager
- 只需挂钩它的getPackageInfo
函数,并且每当调用此函数时,您都可以firstInstallTime
根据自己的喜好修改返回对象中的字段。您可以使用afterHookedMethod()
xposed 的功能来做到这一点。
ApplicationPackageManager: http: //grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/app/ApplicationPackageManager.java#ApplicationPackageManager.getPackageInfo%28java.lang。字符串%2Cint%29
afterHookedMethod:http://api.xposed.info/reference/de/robv/android/xposed/XC_MethodHook.html#afterHookedMethod(de.robv.android.xposed.XC_MethodHook.MethodHookParam)