val mAppOps = context.getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager val appInfo = context.applicationInfo val pkg = context.applicationContext.packageName val uid = appInfo.uid
val appOpsClass: Class<*>? /* Context.APP_OPS_MANAGER */
try { appOpsClass = Class.forName(AppOpsManager::class.java.name) val checkOpNoThrowMethod = appOpsClass!!.getMethod(CHECK_OP_NO_THROW, Integer.TYPE, Integer.TYPE, String::class.java) val opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION) val value = opPostNotificationValue.get(Int::class.java) asInt
AndFix 是阿里系的一个轻量级热修复,热更新框架,只支持简单的method修改,没有res修复等臃肿功能。具体的实现是通过native进行原函数的指针替换,具有一次修复,持续有效的特性(当然是不清除app所有数据前提下)。AndFix has a native method art_replaceMethod in ART or dalvik_replaceMethod in Dalvik.