Open liyujiang-gzu opened 6 years ago
厉害了,手q是咋反编译的?
没有Lenovo手机验证,不知是否有效:
//Lenovo Launcher
public static void setBadgeOfLenovo(Context context, int count) {
try {
ContentValues cv = new ContentValues();
String str = getLauncherClassName(context);
cv.put("package", context.getPackageName());
cv.put("class", str);
cv.put("badgecount", count);
cv.put("extraData", "");
ContentResolver resolver = context.getContentResolver();
Uri uri = Uri.parse("content://com.lenovo.launcher.badge/lenovo_badges");
String[] pkgs = {context.getPackageName()};
Cursor cursor = resolver.query(uri, new String[]{"package", "class", "badgecount", "extraData"}, "package=?", pkgs, null);
if (cursor != null && cursor.getCount() > 0) {
if (cursor.moveToFirst()) {
resolver.update(uri, cv, "package=?", pkgs);
}
cursor.close();
} else {
resolver.insert(uri, cv);
}
//LogUtils.d("Lenovo set badge success");
} catch (Exception e) {
//LogUtils.w("Lenovo set badge failed: " + e.getMessage());
}
}
//Badge Provider
private static void setBadgeOfProvider(Context context, int count) {
try {
String pkg = getLauncherPackageName(context);
ApplicationInfo info = context.getApplicationContext().getPackageManager().getApplicationInfo(pkg, PackageManager.GET_META_DATA);
String provider = info.metaData.getString("badge_provider");
Uri uri = Uri.parse("content://" + provider + "/badge");
Bundle extra = new Bundle();
extra.putInt("count", count);
context.getContentResolver().call(uri, "setBadge", "", extra);
//LogUtils.d("Provider set badge success by ContentResolver");
} catch (Exception e2) {
//LogUtils.w("Provider set badge failed by ContentResolver: " + e2.getMessage());
}
}
反编译出来的类,效果如何?
反编译用处不大,oppo、vivo、360目测是单独给QQ和微信开了小灶
是啊,包括后台,也是开小灶了,可恶的手机厂商!
针对于小米的这种需要Notification才能设置角标的,那我后台推送的就是消息的推送,已经显示出了Notification可咋搞。
com.tencent.mobileqq.msf.core.push.BadgeUtilImpl反编译代码如下:
BadgeController类:
CommonBadgeUtilImpl类: