I hereby claim:
- I am ivaniskandar on github.
- I am ivaniskandar (https://keybase.io/ivaniskandar) on keybase.
- I have a public key ASAYZyLMAFWWHq8uqugLKb3m7HTKK7egjP9xrQf0N8VZSgo
To claim this, I am signing this object:
| for (PackageInfo pi : context.getPackageManager().getInstalledPackages(0)) { | |
| try { | |
| Class piClass = pi.getClass(); | |
| Field overlaytargetField = piClass.getDeclaredField("overlayTarget"); | |
| overlaytargetField.setAccessible(true); | |
| String target = overlaytargetField.get(pi).toString(); | |
| if (target != null) { | |
| Log.d("lmao", pi.packageName + " is overlaying: " + target); | |
| } |
| 100% — FF (primary text dark) | |
| 99% — FC | |
| 98% — FA | |
| 97% — F7 | |
| 96% — F5 | |
| 95% — F2 | |
| 94% — F0 | |
| 93% — ED | |
| 92% — EB | |
| 91% — E8 |
I hereby claim:
To claim this, I am signing this object:
| { | |
| "data":{ | |
| "SYNO.API.Auth":{ | |
| "maxVersion":6, | |
| "minVersion":1, | |
| "path":"auth.cgi" | |
| }, | |
| "SYNO.API.Encryption":{ | |
| "maxVersion":1, | |
| "minVersion":1, |
| // https://stackoverflow.com/a/53407183 | |
| fun Context.getApplicationSignature(packageName: String): List<String> { | |
| val signatureList: List<String> | |
| try { | |
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { | |
| // New signature | |
| val sig = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES).signingInfo | |
| signatureList = if (sig.hasMultipleSigners()) { | |
| // Send all with apkContentsSigners | |
| sig.apkContentsSigners.map { |
| fun Context.getOneUiVersion(): Double { | |
| if (!isSemAvailable()) { | |
| return 1.0 | |
| } | |
| val semPlatformIntField: Field = Build.VERSION::class.java.getDeclaredField("SEM_PLATFORM_INT") | |
| val version: Int = semPlatformIntField.getInt(null) - 90000 | |
| return if (version < 0) { | |
| 1.0 | |
| } else { | |
| ((version / 10000).toString() + "." + version % 10000 / 100).toDouble() |
| /** | |
| * ui_night_mode | ui_night_mode_override | |
| * twilight-night-on 0 | 0 | |
| * twilight-night-off 0 | 1 | |
| * twilight-day-on 0 | 1 | |
| * twilight-night-off 0 | 0 | |
| * manual-on 2 | 1 | |
| * manual-off 1 | 1 | |
| * | |
| * References: |
| val appContext = context.createPackageContext(packageName, 0) | |
| val res = appContext.resources | |
| // val cookie = res.assets.findCookieForPath(appContext.applicationInfo.sourceDir) | |
| val apkCount = appContext.applicationInfo.splitSourceDirs.count() + 1 | |
| (0..apkCount).forEach { cookie -> | |
| res.assets.openXmlResourceParser(cookie, "AndroidManifest.xml").use { | |
| var eventType: Int | |
| while (true) { | |
| eventType = it.nextToken() | |
| if (eventType == XmlPullParser.START_TAG && it.name == "application") { |
| import androidx.activity.BackEventCompat | |
| import androidx.activity.compose.PredictiveBackHandler | |
| import androidx.compose.animation.AnimatedContent | |
| import androidx.compose.animation.AnimatedContentTransitionScope | |
| import androidx.compose.animation.ContentTransform | |
| import androidx.compose.animation.EnterTransition | |
| import androidx.compose.animation.ExitTransition | |
| import androidx.compose.animation.SizeTransform | |
| import androidx.compose.animation.core.AnimationSpec | |
| import androidx.compose.animation.core.ExperimentalTransitionApi |