55 Commits
1.51 ... 1.7

Author SHA1 Message Date
09191802ad Update version to 1.7,fix more bugs 2022-02-20 12:42:45 +08:00
64f252986b 增加通知图标兼容模式,修改回之前的方案 2022-02-20 12:36:13 +08:00
c073d350d0 修改文案 2022-02-20 12:14:17 +08:00
cbeaaa8733 优化代码 2022-02-20 12:04:52 +08:00
3b5e066e2d Merge code 2022-02-20 03:44:34 +08:00
79843eb0d0 修复一个彩色图标判断失误的问题,重新发布版本 1.67 2022-02-20 01:22:56 +08:00
7a4e254230 Update version to 1.66,fix more bugs 2022-02-20 00:24:07 +08:00
0534ab9218 新增“QQ浏览器”、“QQ阅读”通知优化图标 2022-02-20 00:20:19 +08:00
5cee229a99 优化日志打印文本 2022-02-19 23:48:32 +08:00
b6920e3ca1 从 AOSP 源码提取工具类修复 💩 MIUI 对 Android 系统源码的破坏导致灰度图标无法判断 2022-02-19 23:46:03 +08:00
Fankesyooni
a4f7c95f84 Update issue templates 2022-02-19 22:26:16 +08:00
38803846cd Merge code 2022-02-19 03:12:04 +08:00
fb44c4e945 Update version to 1.65,fix more bugs 2022-02-18 23:24:04 +08:00
a2fc95d765 Update version to 1.65,fix more bugs 2022-02-18 23:22:53 +08:00
0e3ef5418c 优化“哔哩哔哩漫画”通知优化图标、增加“讯飞输入法”、“讯飞输入法小米版”通知优化图标 2022-02-18 23:20:30 +08:00
4e5e2cee09 优化代码 2022-02-18 04:10:17 +08:00
7b4b728523 移除不必要的 Hook,修复 MIUI 12 下依然卡顿的问题 2022-02-18 04:04:04 +08:00
9b6540df65 更新 YukiHookAPI 版本 2022-02-18 03:58:22 +08:00
3e8982aad0 Update IconPackParams.kt 2022-02-17 21:59:32 +08:00
085f2498c8 Update IconPackParams.kt 2022-02-17 21:58:09 +08:00
a1e01d1d33 Merge to pending 2022-02-17 21:54:18 +08:00
03aa550487 Update IconPackParams.kt 2022-02-17 21:52:22 +08:00
ea632b8892 Merge code 2022-02-17 21:51:10 +08:00
Fankesyooni
69847a0b0b Merge pull request #29 from sddpljx/master
优化 Jump 图标,增加 斗鱼 图标
2022-02-17 21:44:57 +08:00
sddpljx
4cdbfa944d 优化Jump图标,增加斗鱼图标 2022-02-17 16:21:29 +08:00
Fankesyooni
9edb04cf08 Merge pull request #28 from naicfeng/master
优化 工商银行 网易邮箱大师 小米音乐 图标
2022-02-17 14:39:19 +08:00
naicfeng
071c98e8f3 优化 工商银行 网易邮箱大师 小米音乐 图标 2022-02-17 09:18:47 +08:00
Fankesyooni
a317cc07f5 Update issue templates 2022-02-17 05:16:52 +08:00
ef0392a168 Update version to 1.6,fix more bugs 2022-02-17 05:10:53 +08:00
32e9ee3c8b 修正调整部分功能和文案 2022-02-17 05:03:23 +08:00
296f12d07a 修复一个设置逻辑错误的问题 2022-02-17 04:47:15 +08:00
df99256231 优化“浏览器”、“小米视频”通知优化图标 2022-02-17 04:29:33 +08:00
60128bcb1a 完全修复 MIUI 12 状态栏小图标无法对 MIPUSH 生效的问题,优化 MIPUSH 未经过适配的图标为 APP 图标包的图标 2022-02-17 04:18:50 +08:00
54aec1051f Merge code 2022-02-17 03:08:25 +08:00
121170ba65 增加“皮皮虾”、“智联招聘”、“京东金融”、“慢慢买”、“识货”、“BOSS直聘”通知优化图标 2022-02-17 02:53:44 +08:00
a2d282c3f1 增加“应用商店”、“百度贴吧”通知优化图标 2022-02-17 02:28:13 +08:00
4d0098f1b8 优化大量通知图标适配颜色 2022-02-17 02:17:33 +08:00
49f6bc921c 优化调试日志处理方式 2022-02-17 01:45:16 +08:00
f94286351b 优化部分代码 2022-02-17 01:25:31 +08:00
faad964359 fix 2022-02-17 01:15:05 +08:00
78308ac558 通知图标优化界面增加快速滚动按钮 2022-02-17 01:14:05 +08:00
03fd389e13 完善贡献者昵称 2022-02-17 00:44:12 +08:00
fb067577af 优化阿里云盘图标 2022-02-17 00:34:57 +08:00
da5d4eba1b 合并代码 2022-02-17 00:17:08 +08:00
Fankesyooni
aa22ee05c6 Update issue templates 2022-02-17 00:06:38 +08:00
08873b3e1f 更新贡献文案 2022-02-16 23:37:34 +08:00
7bfd2046ca 更新贡献者名称 2022-02-16 23:31:12 +08:00
f57e658900 Merge remote-tracking branch 'origin/master' 2022-02-16 23:30:32 +08:00
Fankesyooni
b7ec4559cf Merge pull request #26 from naicfeng/master
适配 网易邮箱大师 小米音乐
2022-02-16 23:30:14 +08:00
c707f8a3f7 更新贡献者名称 2022-02-16 23:29:34 +08:00
naicfeng
350823f4ec 适配 小米音乐 2022-02-16 23:22:44 +08:00
naicfeng
26c6241d38 适配 网易邮箱大师 2022-02-16 23:17:25 +08:00
Fankesyooni
6e0c42638f Merge pull request #25 from naicfeng/master
修改 工商银行 图标增加边界,适配 Jump/虎扑/IT之家 图标 #24
2022-02-16 22:45:18 +08:00
naicfeng
8c6d7d7258 修改 工商银行 图标增加边界,适配 Jump/虎扑/IT之家 图标 #24 2022-02-16 22:29:21 +08:00
8b9ecc1d87 规范资源文件命名 2022-02-16 03:38:37 +08:00
59 changed files with 1260 additions and 452 deletions

29
.github/ISSUE_TEMPLATE/----------.md vendored Normal file
View File

@@ -0,0 +1,29 @@
---
name: 通知优化图标适配反馈
about: 提交通知图标优化适配必须使用此模板提交
title: "[通知优化图标适配反馈]"
labels: To be adapted
assignees: ''
---
**需要适配的 APP 名称/包名/通知图标颜色 (必填)**
* (示例:小米音乐/com.miui.player/#fff16033)
*
**提供相关 APP 的下载渠道截图以及简要说明用途 (必填)**
*
**提供相关 APP 的通知单色图标适配素材 大小 50x50 (选填)**
* (可填写资源下载地址或直接添加附件提交,不接受百度网盘、天翼云盘以及各种快传、私有云盘)
* (若直接在附件提交这里可不填)
<!--- 提交时请将括号内容包括括号全部删除,填入你自己的内容 --->
<!--- 请保留模板原始标题 --->
<!--- 不按规定提交的 issues 将直接被关闭 --->
<!--- Create by Template --->

52
.github/ISSUE_TEMPLATE/----bug---.md vendored Normal file
View File

@@ -0,0 +1,52 @@
---
name: 问题与 BUG 反馈
about: 问题反馈必须使用此模板进行提交
title: "[问题与 BUG 反馈] *简要描述问题原因*"
labels: bug
assignees: fankes
---
**MIUI 版本(必填)**
*
**MIUI 版本类型(请保留一个)**
* 公测版/内测版/稳定版
**Android 版本(必填)**
*
**模块版本(必填)**
*
**使用的 Xposed 框架名称与框架版本(必填)**
*
**同时使用的带有系统界面作用域的 Xposed 模块(选填)**
* (没有可空)
**问题的具体描述**
* (复现步骤、前提以及详细截图和录屏演示)
**提供模块问题 Log 或必要 Log**
* (LSPosed 可在日志管理中查看并筛选包含 `MIUINativeNotifyIcon` 的日志)
<details><summary>展开查看</summary><pre><code>
此处粘贴问题Log
</code></pre></details>
<!--- 提交时请将括号内容包括括号全部删除,填入你自己的内容 --->
<!--- 请保留模板原始标题 --->
<!--- 不按规定提交的 issues 将直接被关闭 --->
<!--- Create by Template --->

2
.idea/misc.xml generated
View File

@@ -10,7 +10,7 @@
<entry key="app/src/main/res/drawable/white_round.xml" value="0.256" />
<entry key="app/src/main/res/layout/activity_config.xml" value="0.42168674698795183" />
<entry key="app/src/main/res/layout/activity_login.xml" value="0.4375" />
<entry key="app/src/main/res/layout/activity_main.xml" value="0.37516748548459133" />
<entry key="app/src/main/res/layout/activity_main.xml" value="0.36160137752905724" />
<entry key="app/src/main/res/layout/adapter_config.xml" value="0.4375" />
<entry key="app/src/main/res/layout/dia_icon_search.xml" value="0.4307692307692308" />
<entry key="app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml" value="0.44871794871794873" />

View File

@@ -31,6 +31,7 @@ IconDataBean(
)
```
- 图标大小建议保持在 50x50
- 提交时请将后方的注释删除,否则不予合并代码
## 其它要求

View File

@@ -2,7 +2,7 @@
![Eclipse Marketplace](https://img.shields.io/badge/build-passing-brightgreen)
![Eclipse Marketplace](https://img.shields.io/badge/license-AGPL3.0-blue)
![Eclipse Marketplace](https://img.shields.io/badge/version-v1.51-green)
![Eclipse Marketplace](https://img.shields.io/badge/version-v1.7-green)
<br/><br/>
<img src="https://github.com/fankes/MIUINativeNotifyIcon/blob/master/app/src/main/ic_launcher-playstore.png" width = "100" height = "100"/>
<br/>
@@ -12,12 +12,13 @@ Fix the native notification bar icon function abandoned by the MIUI development
# 开始使用
点击下载最新版本
<a href='https://github.com/fankes/MIUINativeNotifyIcon/releases'>![Eclipse Marketplace](https://img.shields.io/badge/download-v1.51-green)</a>
<a href='https://github.com/fankes/MIUINativeNotifyIcon/releases'>![Eclipse Marketplace](https://img.shields.io/badge/download-v1.7-green)</a>
<br/><br/>
⚠️ 适配说明<br/>
- 此模块仅支持 LSPosed(作用域“系统界面”)、~~EdXposed(随时停止支持)~~、不支持太极无极
- 目前最低支持基于 Android 9 版本的 MIUI 12 或 MIUI 12.5(最低建议)
- 建议最低从 MIUI 12.5 `2021-5-18` 开发版以后开始使用模块,之前的版本可能或多或少存在 MIUI 自身 BUG 不生效、黑白块的问题
- 请始终保持最新版本的 LSPosed旧版本可能会出现 Hook 不生效的问题
# 请勿用于非法用途

View File

@@ -51,9 +51,13 @@ android {
tasks.whenTaskAdded {
task -> if (task.name == "lintVitalRelease") task.enabled = false
}
/** 移除无效耗时 lint Task */
tasks.whenTaskAdded {
task -> if (task.name == "lintVitalAnalyzeRelease") task.enabled = false
}
/** 移除无效耗时 lint Task */
tasks.whenTaskAdded {
task -> if (task.name == "lintVitalReportRelease") task.enabled = false
}
@@ -64,8 +68,8 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
compileOnly 'de.robv.android.xposed:api:82'
implementation 'com.highcapable.yukihookapi:api:1.0.1'
ksp 'com.highcapable.yukihookapi:ksp-xposed:1.0.1'
implementation 'com.highcapable.yukihookapi:api:1.0.2'
ksp 'com.highcapable.yukihookapi:ksp-xposed:1.0.2'
implementation 'com.geyifeng.immersionbar:immersionbar:3.2.0'
implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.0'
implementation 'androidx.core:core-ktx:1.7.0'

View File

@@ -53,5 +53,4 @@
android:exported="false"
android:screenOrientation="behind" />
</application>
</manifest>

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -1,24 +0,0 @@
package com.fankes.miui.notify.data
import com.fankes.miui.notify.data.model.LoggedInUser
import java.io.IOException
/**
* Class that handles authentication w/ login credentials and retrieves user information.
*/
class LoginDataSource {
fun login(username: String, password: String): Result<LoggedInUser> {
try {
// TODO: handle loggedInUser authentication
val fakeUser = LoggedInUser(java.util.UUID.randomUUID().toString(), "Jane Doe")
return Result.Success(fakeUser)
} catch (e: Throwable) {
return Result.Error(IOException("Error logging in", e))
}
}
fun logout() {
// TODO: revoke authentication
}
}

View File

@@ -1,46 +0,0 @@
package com.fankes.miui.notify.data
import com.fankes.miui.notify.data.model.LoggedInUser
/**
* Class that requests authentication and user information from the remote data source and
* maintains an in-memory cache of login status and user credentials information.
*/
class LoginRepository(val dataSource: LoginDataSource) {
// in-memory cache of the loggedInUser object
var user: LoggedInUser? = null
private set
val isLoggedIn: Boolean
get() = user != null
init {
// If user credentials will be cached in local storage, it is recommended it be encrypted
// @see https://developer.android.com/training/articles/keystore
user = null
}
fun logout() {
user = null
dataSource.logout()
}
fun login(username: String, password: String): Result<LoggedInUser> {
// handle login
val result = dataSource.login(username, password)
if (result is Result.Success) {
setLoggedInUser(result.data)
}
return result
}
private fun setLoggedInUser(loggedInUser: LoggedInUser) {
this.user = loggedInUser
// If user credentials will be cached in local storage, it is recommended it be encrypted
// @see https://developer.android.com/training/articles/keystore
}
}

View File

@@ -1,18 +0,0 @@
package com.fankes.miui.notify.data
/**
* A generic class that holds a value with its loading status.
* @param <T>
*/
sealed class Result<out T : Any> {
data class Success<out T : Any>(val data: T) : Result<T>()
data class Error(val exception: Exception) : Result<Nothing>()
override fun toString(): String {
return when (this) {
is Success<*> -> "Success[data=$data]"
is Error -> "Error[exception=$exception]"
}
}
}

View File

@@ -1,9 +0,0 @@
package com.fankes.miui.notify.data.model
/**
* Data class that captures user information for logged in users retrieved from LoginRepository
*/
data class LoggedInUser(
val userId: String,
val displayName: String
)

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -30,7 +30,8 @@ object HookConst {
const val ENABLE_MODULE_LOG = "_enable_module_log"
const val ENABLE_HIDE_ICON = "_hide_icon"
const val ENABLE_COLOR_ICON_HOOK = "_color_icon_hook"
const val ENABLE_NOTIFY_ICON_HOOK = "_notify_icon_hook"
const val ENABLE_COLOR_ICON_COMPAT = "_color_icon_compat"
const val ENABLE_NOTIFY_ICON_FIX = "_notify_icon_fix"
const val SYSTEMUI_PACKAGE_NAME = "com.android.systemui"
}

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -28,15 +28,17 @@ import android.graphics.Color
import android.graphics.Outline
import android.graphics.drawable.Drawable
import android.graphics.drawable.Icon
import android.os.Build
import android.service.notification.StatusBarNotification
import android.view.View
import android.view.ViewOutlineProvider
import android.widget.ImageView
import androidx.core.graphics.drawable.toBitmap
import com.fankes.miui.notify.hook.HookConst.ENABLE_COLOR_ICON_COMPAT
import com.fankes.miui.notify.hook.HookConst.ENABLE_COLOR_ICON_HOOK
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE_LOG
import com.fankes.miui.notify.hook.HookConst.ENABLE_NOTIFY_ICON_HOOK
import com.fankes.miui.notify.hook.HookConst.ENABLE_NOTIFY_ICON_FIX
import com.fankes.miui.notify.hook.HookConst.SYSTEMUI_PACKAGE_NAME
import com.fankes.miui.notify.hook.factory.isAppNotifyHookAllOf
import com.fankes.miui.notify.hook.factory.isAppNotifyHookOf
@@ -46,6 +48,7 @@ import com.fankes.miui.notify.utils.drawable.drawabletoolbox.DrawableBuilder
import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed
import com.highcapable.yukihookapi.hook.bean.VariousClass
import com.highcapable.yukihookapi.hook.factory.*
import com.highcapable.yukihookapi.hook.log.loggerD
import com.highcapable.yukihookapi.hook.log.loggerW
import com.highcapable.yukihookapi.hook.param.PackageParam
import com.highcapable.yukihookapi.hook.type.android.ContextClass
@@ -74,15 +77,12 @@ class HookEntry : YukiHookXposedInitProxy {
private const val NotificationViewWrapperClass =
"$SYSTEMUI_PACKAGE_NAME.statusbar.notification.NotificationViewWrapper"
/** 原生存在的类 */
private const val StatusBarIconViewClass = "$SYSTEMUI_PACKAGE_NAME.statusbar.StatusBarIconView"
/** 未确定是否只有旧版本存在的类 */
private const val ExpandableNotificationRowClass = "$SYSTEMUI_PACKAGE_NAME.statusbar.ExpandableNotificationRow"
/** 原生存在的类 */
private const val ContrastColorUtilClass = "com.android.internal.util.ContrastColorUtil"
/** 未确定是否只有旧版本存在的类 */
private const val ExpandableNotificationRowClass = "$SYSTEMUI_PACKAGE_NAME.statusbar.ExpandableNotificationRow"
/** 根据多个版本存在不同的包名相同的类 */
private val NotificationUtilClass = VariousClass(
"$SYSTEMUI_PACKAGE_NAME.statusbar.notification.NotificationUtil",
@@ -104,20 +104,18 @@ class HookEntry : YukiHookXposedInitProxy {
* @param drawable 要判断的图标
* @return [Boolean]
*/
private fun PackageParam.isGrayscaleIcon(context: Context, drawable: Drawable) = safeOfFalse {
ContrastColorUtilClass.clazz.let {
it.method(name = "isGrayscaleIcon", DrawableClass)
?.call<Boolean>(it.method(name = "getInstance", ContextClass)?.callStatic(context), drawable) ?: false
}
}
/**
* 获取当前通知栏的样式
* @return [Boolean]
*/
private fun PackageParam.isShowMiuiStyle() = safeOfFalse {
NotificationUtilClass.clazz.method(name = "showMiuiStyle")?.callStatic() ?: false
}
private fun PackageParam.isGrayscaleIcon(context: Context, drawable: Drawable) =
if (!prefs.getBoolean(ENABLE_COLOR_ICON_COMPAT)) safeOfFalse {
ContrastColorUtilClass.clazz.let {
it.method {
name = "isGrayscaleIcon"
param(DrawableClass)
}.get(it.method {
name = "getInstance"
param(ContextClass)
}.get().invoke(context)).invoke<Boolean>(drawable) ?: false
}
} else BitmapCompatTool.isGrayscaleDrawable(drawable)
/**
* 是否为新版本 MIUI 方案
@@ -125,9 +123,19 @@ class HookEntry : YukiHookXposedInitProxy {
* 拥有状态栏图标颜色检查功能
* @return [Boolean]
*/
private fun PackageParam.hasIgnoreStatusBarIconColor() = safeOfFalse {
NotificationUtilClass.clazz.hasMethod(name = "ignoreStatusBarIconColor", ExpandedNotificationClass.clazz)
}
private val PackageParam.hasIgnoreStatusBarIconColor
get() = safeOfFalse {
NotificationUtilClass.clazz.hasMethod(name = "ignoreStatusBarIconColor", ExpandedNotificationClass.clazz)
}
/**
* 获取当前通知栏的样式
* @return [Boolean]
*/
private val PackageParam.isShowMiuiStyle
get() = safeOfFalse {
NotificationUtilClass.clazz.method { name = "showMiuiStyle" }.get().invoke() ?: false
}
/**
* 获取 [ExpandedNotificationClass] 的应用名称
@@ -135,14 +143,59 @@ class HookEntry : YukiHookXposedInitProxy {
* @return [String]
*/
private fun PackageParam.findAppName(instance: Any?) = safeOf(default = "<unknown>") {
ExpandedNotificationClass.clazz.method(name = "getAppName")?.call(instance) ?: "<empty>"
ExpandedNotificationClass.clazz.method { name = "getAppName" }.get(instance).invoke() ?: "<empty>"
}
/**
* 适配通知栏、状态栏图标
*
* 适配第三方图标包对系统包管理器更换图标后的彩色图标
*
* 自动识别 MIPUSH 图标
* @param context 实例
* @param iconDrawable 原始图标
* @return [Drawable] 适配的图标
*/
private fun StatusBarNotification.compatNotifyIcon(context: Context, iconDrawable: Drawable) = safeOf(iconDrawable) {
/** 给 MIPUSH 设置 APP 自己的图标 */
if (isXmsf && opPkgName.isNotBlank())
context.packageManager.getPackageInfo(opPkgName, 0).applicationInfo.loadIcon(context.packageManager)
else iconDrawable
}
/**
* 获取推送通知的包名
*
* 自动兼容旧版本系统
* @return [String]
*/
private val StatusBarNotification.compatOpPkgName
get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) opPkg else packageName ?: ""
/**
* 判断通知是否来自 MIPUSH
* @return [Boolean]
*/
private val StatusBarNotification.isXmsf get() = opPkgName == "com.xiaomi.xmsf"
private val StatusBarNotification.isXmsf get() = compatOpPkgName == "com.xiaomi.xmsf"
/**
* 获取推送通知的包名
*
* 自动判断 MIPUSH
* @return [String]
*/
private val StatusBarNotification.opPkgName get() = if (isXmsf) xmsfPkgName else compatOpPkgName
/**
* 获取 MIPUSH 通知真实包名
* @return [String]
*/
private val StatusBarNotification.xmsfPkgName: String
get() {
val xmsfPkg = notification.extras.getString("xmsf_target_package") ?: ""
val targetPkg = notification.extras.getString("target_package") ?: ""
return xmsfPkg.ifBlank { targetPkg.ifBlank { compatOpPkgName } }
}
/**
* 获取全局上下文
@@ -150,7 +203,9 @@ class HookEntry : YukiHookXposedInitProxy {
*/
private val PackageParam.globalContext
get() = safeOfNull {
SystemUIApplicationClass.clazz.method(name = "getContext")?.callStatic<Context>()
if (SystemUIApplicationClass.clazz.hasMethod(name = "getContext"))
SystemUIApplicationClass.clazz.method { name = "getContext" }.get().invoke<Context>()
else null
}
/**
@@ -169,13 +224,16 @@ class HookEntry : YukiHookXposedInitProxy {
it: (Bitmap) -> Unit
) = safeRun(msg = "GetSmallIconOnSet") {
if (iconDrawable == null) return@safeRun
/** 判断是否不是灰度图标 */
val isNotGrayscaleIcon = !isGrayscaleIcon(context, iconDrawable)
/** 如果没开启修复 APP 的彩色图标 */
if (!prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)) return@safeRun
/** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */
expandedNf?.also { notifyInstance ->
/** 判断是否不是灰度图标 */
val isNotGrayscaleIcon = notifyInstance.isXmsf || !isGrayscaleIcon(context, iconDrawable)
/** 目标彩色通知 APP 图标 */
var customIcon: Bitmap? = null
if (prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true))
if (prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true))
run {
IconPackParams.iconDatas.forEach {
if ((notifyInstance.opPkgName == it.packageName ||
@@ -188,11 +246,14 @@ class HookEntry : YukiHookXposedInitProxy {
}
}
}
/** 打印日志 */
if (prefs.getBoolean(ENABLE_MODULE_LOG))
loggerD(msg = "Icon --> [${findAppName(notifyInstance)}][${notifyInstance.opPkgName}] custom [${customIcon != null}] grayscale [${!isNotGrayscaleIcon}] xmsf [${notifyInstance.isXmsf}]")
when {
/** 如果开启了修复 APP 的彩色图标 */
customIcon != null && prefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true) -> it(customIcon!!)
/** 处理自定义通知图标优化 */
customIcon != null -> it(customIcon!!)
/** 若不是灰度图标自动处理为圆角 */
isNotGrayscaleIcon -> it(iconDrawable.toBitmap().round(15.dp(context)))
isNotGrayscaleIcon -> it(notifyInstance.compatNotifyIcon(context, iconDrawable).toBitmap().round(15.dp(context)))
}
}
}
@@ -207,10 +268,12 @@ class HookEntry : YukiHookXposedInitProxy {
*/
private fun PackageParam.hookNotifyIconOnSet(context: Context, expandedNf: StatusBarNotification?, iconImageView: ImageView) =
safeRun(msg = "AutoSetAppIconOnSet") {
/** 如果没开启修复 APP 的彩色图标 */
if (!prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)) return@safeRun
/** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */
expandedNf?.let { notifyInstance ->
/** 是否 Hook 彩色通知图标 */
val isHookColorIcon = prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
/** 是否开启修复 APP 的彩色图标 */
val isNotifyIconFix = prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true)
/** 新版风格反色 */
val newStyle = if (context.isSystemInDarkMode) 0xFF2D2D2D.toInt() else Color.WHITE
@@ -237,7 +300,7 @@ class HookEntry : YukiHookXposedInitProxy {
val iconDrawable = notifyInstance.notification.smallIcon.loadDrawable(context)
/** 判断图标风格 */
val isGrayscaleIcon = isGrayscaleIcon(context, iconDrawable)
val isGrayscaleIcon = !notifyInstance.isXmsf && isGrayscaleIcon(context, iconDrawable)
/** 自定义默认小图标 */
var customIcon: Bitmap? = null
@@ -245,7 +308,7 @@ class HookEntry : YukiHookXposedInitProxy {
/** 自定义默认小图标颜色 */
var customIconColor = 0
if (isHookColorIcon) run {
if (isNotifyIconFix) run {
IconPackParams.iconDatas.forEach {
if ((notifyInstance.opPkgName == it.packageName ||
findAppName(notifyInstance) == it.appName) &&
@@ -259,8 +322,8 @@ class HookEntry : YukiHookXposedInitProxy {
}
}
}
/** 如果开启了修复 APP 的彩色图标 */
if (customIcon != null && prefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true))
/** 处理自定义通知图标优化 */
if (customIcon != null)
iconImageView.apply {
/** 设置自定义小图标 */
setImageBitmap(customIcon)
@@ -273,33 +336,32 @@ class HookEntry : YukiHookXposedInitProxy {
else {
/** 重新设置图标 - 防止系统更改它 */
iconImageView.setImageDrawable(iconDrawable)
/** 判断是否开启 Hook 彩色图标 */
if (isHookColorIcon) {
/** 判断如果是灰度图标就给他设置一个白色颜色遮罩 */
if (isGrayscaleIcon) iconImageView.apply {
/** 设置图标色 */
setColorFilter(supportColor)
/** Android 12 设置图标外圈颜色 */
if (isUpperOfAndroidS && hasIconColor)
background = DrawableBuilder().rounded().solidColor(iconColor).build()
} else iconImageView.apply {
clipToOutline = true
/** 设置一个圆角轮廓裁切 */
outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View, out: Outline) {
out.setRoundRect(
0, 0,
view.width, view.height, 5.dp(context)
)
}
/** 判断如果是灰度图标就给他设置一个白色颜色遮罩 */
if (isGrayscaleIcon) iconImageView.apply {
/** 设置图标着色 */
setColorFilter(supportColor)
/** Android 12 设置图标外圈颜色 */
if (isUpperOfAndroidS && hasIconColor)
background = DrawableBuilder().rounded().solidColor(iconColor).build()
} else iconImageView.apply {
/** 重新设置图标 */
setImageDrawable(notifyInstance.compatNotifyIcon(context, iconDrawable))
/** 设置裁切到边界 */
clipToOutline = true
/** 设置一个圆角轮廓裁切 */
outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View, out: Outline) {
out.setRoundRect(
0, 0,
view.width, view.height, 5.dp(context)
)
}
/** 清除原生的背景边距设置 */
if (isUpperOfAndroidS) setPadding(0, 0, 0, 0)
/** 清除原生的主题色背景圆圈颜色 */
if (isUpperOfAndroidS) background = null
}
/** 否则一律设置灰度图标 */
} else iconImageView.setColorFilter(supportColor)
/** 清除原生的背景边距设置 */
if (isUpperOfAndroidS) setPadding(0, 0, 0, 0)
/** 清除原生的主题色背景圆圈颜色 */
if (isUpperOfAndroidS) background = null
}
}
}
}
@@ -321,36 +383,35 @@ class HookEntry : YukiHookXposedInitProxy {
notifyInstance.notification.smallIcon.loadDrawable(context)
/** 判断是否不是灰度图标 */
val isNotGrayscaleIcon = !isGrayscaleIcon(context, iconDrawable)
val isNotGrayscaleIcon = notifyInstance.isXmsf || !isGrayscaleIcon(context, iconDrawable)
/** 获取目标修复彩色图标的 APP */
var isTargetApp = false
run {
IconPackParams.iconDatas.forEach {
if ((notifyInstance.opPkgName == it.packageName ||
findAppName(notifyInstance) == it.appName) &&
isAppNotifyHookOf(it)
) {
if (isNotGrayscaleIcon || isAppNotifyHookAllOf(it)) isTargetApp = true
return@run
var isTargetFixApp = false
/** 如果开启了自定义通知图标优化 */
if (prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true))
run {
IconPackParams.iconDatas.forEach {
if ((notifyInstance.opPkgName == it.packageName ||
findAppName(notifyInstance) == it.appName) &&
isAppNotifyHookOf(it)
) {
if (isNotGrayscaleIcon || isAppNotifyHookAllOf(it)) isTargetFixApp = true
return@run
}
}
}
}
/**
* 如果开启了修复 APP 的彩色图标
* 只要不是灰度就返回彩色图标
* 否则不对颜色进行反色处理防止一些系统图标出现异常
*/
if (isTargetApp && prefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true))
false
else isNotGrayscaleIcon
if (isTargetFixApp) false else isNotGrayscaleIcon
} ?: true
} else false
override fun onHook() = encase {
configs {
debugTag = "MIUINativeNotifyIcon"
isDebug = prefs.getBoolean(ENABLE_MODULE_LOG)
isDebug = false
}
loadApp(SYSTEMUI_PACKAGE_NAME) {
when {
@@ -375,9 +436,9 @@ class HookEntry : YukiHookXposedInitProxy {
* 因为之前的 MIUI 版本的状态栏图标颜色会全部设置为白色的 - 找不到修复的地方就直接判断版本了
* 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook
*/
replaceAny { if (hasIgnoreStatusBarIconColor()) false else isShowMiuiStyle() }
replaceAny { if (hasIgnoreStatusBarIconColor) false else isShowMiuiStyle }
}
if (hasIgnoreStatusBarIconColor())
if (hasIgnoreStatusBarIconColor)
injectMember {
method {
name = "ignoreStatusBarIconColor"
@@ -408,7 +469,7 @@ class HookEntry : YukiHookXposedInitProxy {
}
afterHook {
/** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */
if (hasIgnoreStatusBarIconColor() || !isShowMiuiStyle())
if (hasIgnoreStatusBarIconColor || !isShowMiuiStyle)
(globalContext ?: args[0] as Context).also { context ->
hookSmallIconOnSet(
context = context,
@@ -419,33 +480,8 @@ class HookEntry : YukiHookXposedInitProxy {
}
}
}
findClass(StatusBarIconViewClass).hook {
/** 修复通知图标为彩色 - MIPUSH 修复 */
injectMember {
method { name = "updateIconColor" }
afterHook {
/** 获取自身 */
val iconImageView = instance<ImageView?>() ?: return@afterHook
/** 获取通知实例 */
val expandedNf = field { name = "mNotification" }.of<StatusBarNotification>(instance)
/**
* 强制设置图标 - 防止 MIPUSH 不生效
* 由于之前版本没有 [hasIgnoreStatusBarIconColor] 判断 - MIPUSH 的图标颜色也是白色的
* 所以之前的版本取消这个 Hook - 实在找不到设置图标的地方 - 状态栏图标就彩色吧
*/
if (hasIgnoreStatusBarIconColor() && expandedNf?.isXmsf == true)
hookSmallIconOnSet(
context = iconImageView.context,
expandedNf,
expandedNf.notification?.smallIcon?.loadDrawable(iconImageView.context)
) { icon -> iconImageView.setImageBitmap(icon) }
}
}
}
if (NotificationHeaderViewWrapperInjectorClass.hasClass)
findClass(NotificationHeaderViewWrapperInjectorClass).hook {
NotificationHeaderViewWrapperInjectorClass.hook {
/** 修复下拉通知图标自动设置回 APP 图标的方法 */
injectMember {
var isUseLegacy = false
@@ -485,30 +521,30 @@ class HookEntry : YukiHookXposedInitProxy {
}
}
else
findClass(NotificationHeaderViewWrapperClass).hook {
NotificationHeaderViewWrapperClass.hook {
/** 之前的版本解决方案 */
injectMember {
method { name = "handleHeaderViews" }
afterHook {
/** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */
if (!hasIgnoreStatusBarIconColor() && isShowMiuiStyle()) return@afterHook
if (!hasIgnoreStatusBarIconColor && isShowMiuiStyle) return@afterHook
/** 获取小图标 */
val iconImageView = field {
classSet = NotificationHeaderViewWrapperClass.clazz
name = "mIcon"
}.of<ImageView>(instance) ?: return@afterHook
/** 从父类中得到 mRow 变量 - [ExpandableNotificationRowClass] */
field {
classSet = NotificationViewWrapperClass.clazz
name = "mRow"
}.get(instance).apply {
/** 获取其中的得到通知方法 */
val expandedNf =
ExpandableNotificationRowClass.clazz.method(name = "getStatusBarNotification")
?.call<StatusBarNotification>(instance = self)
/** 执行 Hook */
hookNotifyIconOnSet(iconImageView.context, expandedNf, iconImageView)
}
val iconImageView =
NotificationHeaderViewWrapperClass.clazz
.field { name = "mIcon" }.of<ImageView>(instance) ?: return@afterHook
/**
* 从父类中得到 mRow 变量 - [ExpandableNotificationRowClass]
* 获取其中的得到通知方法
*/
val expandedNf =
ExpandableNotificationRowClass.clazz
.method { name = "getStatusBarNotification" }
.get(NotificationViewWrapperClass.clazz.field { name = "mRow" }.get(instance).self)
.invoke<StatusBarNotification>()
/** 执行 Hook */
hookNotifyIconOnSet(iconImageView.context, expandedNf, iconImageView)
}
}
}

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -59,7 +59,7 @@ object IconPackParams {
"6hjwnGqds8tgBlgVQpiem+rb+P5DAywCtkJzjY8PzkvfGYdm8IkBGuk3E9AMvnGARvrNJmgGL/bn\n" +
"2v+TFdAMnvX4+T2wDJrBRwdopN9kfhMbiUQikUgkEolEIpGy+QJozXWVnxEugwAAAABJRU5ErkJg\n" +
"gg==").bitmap,
iconColor = 0xff85db88.toInt(),
iconColor = 0xff72c476.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -139,6 +139,7 @@ object IconPackParams {
"HZK6JZV+lv6U9FbFr7tbzrlXKYJUSxrR37v3d+dcNTCm8jfiTc65+9PwX3ko/gf26TdqiU9QJmB/\n" +
"9lokuu8yg+JX5WiCILP2N3LaAHtiQlib7dwE6AKGvQDDFB8w/wwXL5k5QI2KL39Nkh5Leuycs15j\n" +
"cnJycnJyMuEXxX+pSnClwogAAAAASUVORK5CYII=").bitmap,
iconColor = 0xff82529d.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -205,6 +206,30 @@ object IconPackParams {
"7V6pVEilUiSTSZLJJEEQrOZkGrhlZs9bn25XXXW1xfQHr/RmrURpKCwAAAAASUVORK5CYII=").bitmap,
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "应用商店",
packageName = "com.xiaomi.market",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAANzSURBVGiB7ZtPax1VGMZ/r5obK6FNoNKKGhBioq7EPy1Fja5NXIp+g4oIdZdkY9pP\n" +
"kI26tsFNPkBQ6KpoF81KQa2xASFijCQakoDa4s3jYs4M506ul3vPnT/JZH6bO5wz73Pe55xh5pxz\n" +
"Z6Cm2linSkkjwDvAq8CzwGPAw8BI/ql1xQ7wD/AbcAf4Glgys52eVCQNSroqaVfHj11FuQ+283Zo\n" +
"hCWdBZaBC7129xFjBZgys22/sMWw65WbwMUCE8uT28Ckmd2PCx5InfAR1TELkZd5vyAZYXcprwOn\n" +
"Ck4qb/4GRuNL2x/htwkz2zAzAz7MILn/44proxEQe4rIG9Bq+JXAZOJH1B+B8d3wZ6qtXkm8+Yaf\n" +
"DhSL474JjO+Gb1Nt9cpYfOAbfjJQ7JL7/R74NVCjExvAd6m2emU0PvANPxIoNgVgZgIWAzU6cd1p\n" +
"A7wZqJF48+/STQ4/prrhAJgwszVJ54CfgNOBiaXZB8bNbFPSGLAamqOZPUgqOEQojpsBMLPfgblA\n" +
"nXbMmtmmO56hvxxb6XP++q+kF52OSfq8Tz05DXOaL7k2gsnasCTdkTTktAYkXe9Da1HSgNMactp9\n" +
"kYdhSfpSUsPTvCxpq4f4LUnvefENSV9kkVhehiXppqJpaqw7LGlenUfpR0VLumEv7qzTyoRY179L\n" +
"H+6FcH4G3jWzlVSnjgPPA48C94kW7qtmdjd13svAEvBUVgm5qWlLI1nTlPSZM9kVksZdTDPrZBLj\n" +
"vuFMurKND6Ktl2Wi9ekqsOvqzgATRMu4KaKtpI7bTqHEI1yE4SNBbDj0QX5sqQ1Xndpw1akNV53a\n" +
"cBZYlwCPA5+kwue8+swpdYTNbMPMPiBaKBTCQ3mKS3oCeMYr8veV94EbZtYEPib6WzZ3cjUMvAV8\n" +
"2qH+DaI/737JOY+Esm9aQ+63sIVL3iPs8z6wDbwAzBbYbgtFGl42s3VJfxXY5iHKvqQLpzZcdWrD\n" +
"VafexKs6J9rwQWlZ5E/izTe8X0IiRZF48w2XOuXLmcSbb7iwJVoJrMcHvuG7bU6sCmvxgW/4VgmJ\n" +
"FEXi7eS+XOoKFsrKKkcW/JfET8IL4q+b2b24oGWm5SqmiV6fP+6sANO+WWgztXTDPwlcA/aKyS1T\n" +
"9ohyn0x/7wDdf8bzGvAccB4Y5Gh9xnMP2AR+AL4i5DOemgrxH3VlWjzgXbNOAAAAAElFTkSuQmCC").bitmap,
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = true,
@@ -220,6 +245,7 @@ object IconPackParams {
"2qsWwFEh4ii1jxeMfgIF+ZmT+Zd49y4MzEvqSvocX8eJO0kXZvanOFgKAZYkXUpajShWh4GkLTMb\n" +
"vg5UPz7sq/0R0shxvzhQDVmL5+JNybUa8hhRxJeSazXkV0QRX0qu4+5aG5K+S1qJZTQjD5J+mNnP\n" +
"1CKZ/4K/9OOkaYhf6uEAAAAASUVORK5CYII=").bitmap,
iconColor = 0xff72c476.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -242,7 +268,7 @@ object IconPackParams {
"agKcAD4qzycXt4HZj5OeEfEI+AK4XJpSPnZGxJ2sTNPrwHHSI+XzxhlgaUQMjUgzR8RV4EPgVMe1\n" +
"ns0fwMpc1yzqWnWwXZ9ABfhRfaXQY6oz1M3mT3q2ksvqOjOSp0XTzItJbwneARYDrb6jEbgCXAC+\n" +
"B36oLBpjjNEo/wOVy3FIguSj2QAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xffa1c1f8.toInt(),
iconColor = 0xff5f94e2.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -251,24 +277,27 @@ object IconPackParams {
appName = "浏览器",
packageName = "com.android.browser",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAPVSURBVGiB1ZpPaB1VFMZ/5/EWxcSFLqQJkrYQxeKyi9JdoSI0Fgu6FIm4UWMCKkgV\n" +
"CknFRWqLCD4oWKrgqlCEJpSABUHclC5CRUVMN7po81wUhISuuvhczAtvOjl3/r07L8m3eXDOved8\n" +
"37szc+eeM0YkSHoSOAUcAcaBsdQvQBdYT/2uAjfMbDMWh9qQNClpTtKK6mOlF2NyJwQcltQZgHwI\n" +
"HUmHhyFgQtKipM0GRGxhs5djoikR05K6DQrIoitpOraIM0MUkMWZWCKuN0x0QdJ/BWOuF/FsFYgQ\n" +
"cDrKP5KPk8DVHP/pHpfqkLTa8Eps4Xgq55uS7uSMXa0q4vJwNOi+ko00nXtU0nzOnMtlRcwMRUKC\n" +
"d3N4nM+ZN1MkYkLDecSuSTpR4k/9OjC/q8w+087MnQH2FyUoiXMB+y3glpltFAUwszlJTwBvZ1z7\n" +
"Sbh+sm2SkteOmDv2QkXhQUi66sTfVOp1Jv34fR8YjZU8Mr50bKMknPuQdCjiSkRfkR7H7wN5DkF/\n" +
"RQpvvF2AbwP2E9AX8vJwuNSHmf0M/OC4Eu6SRhq4rO5LOhhbjKSpQL6RFjAVOd+vwAUz+ydyXMxs\n" +
"BbjnuKbawFHHcQ6YLxHYBuRWB3eBZzO2oy2SAkEWD4CzjVOqh7uObbxNv8qRxgMz60h6BJxvlldl\n" +
"/OXYxkIr8jeAmX0BfNQkqxr43bGNI2nDeQo8nR4ladZ7VAyJ+GOQ9IxDZSMkZJ8T4J2iZ25F3JH0\n" +
"QQ0h+0JC1hyHd98g6b3IYirvN5LGnDhrLZLyZRZPeUHM7BIwVyVxAcaBqiUfj9t6i6QWW2YwAGbW\n" +
"AT6smDwPVfcij1s3tCLHHVs/s9lXwMcVCcTCq45tvQXcdhwvFUUzs4vAp4OyqoHXHNvt0Evjo9AN\n" +
"n4WkswPe8KXPLZJOBmKMtMzsIXAtM6dNycKcmX1O+HweG95ldc3MHm6dR246A2Yl7Zqjr6QXgLcc\n" +
"103oH6x+cga8CMw2xKsOpoFtGzVZ7vIbN/ckHSjKIOmNAe+TLfwraVnSqUz8Sfn1to5HJlQO+qaE\n" +
"kOcjCUljPhV/yfE/Vg7KEloMBPWuzezc5QbEHJP0WcC3mEcmr2T6egkxf0QW8mPAvq1k6pHJK2IX\n" +
"Hn+VNG6WlbwQNoX8InaKTF5boVBMSlATKNdWSBHJa/TckHRsB4QEGz3B1puZHcnh+Qrwi5KGzHPF\n" +
"f0sc5HHK7SH2yj1LAXcbWAB+k3RFJfodA2ApSulJ5dvTf0r6TslJMtalFac9nRKz9z8YSInZ+59w\n" +
"ZATt7Y9qHEG75jOnaEVo7fCHZ/8DGEL3uplW+PsAAAAASUVORK5CYII=").bitmap,
"CHwIZIgAAAR1SURBVGiBxZpviBVlFMafs20XohaqlVZXtM22NEkit7ZIipVkLSKswA+ZRBYFFhHF\n" +
"FtQXlySikkCCgiAqkOjDkqC1ESarGRa0ViDpRhRRebeyNSuJWjd+fZi57ds4M/u+c+fefeAyf945\n" +
"z3OeeWfunDn3mhoE4DRJ8+PPCUlVM5tolJ6VRQRcK2mtpBWSOiXNTTlsUlJV0rikYUnbzeyLMvTr\n" +
"MgLcIKlf0hpJiwrSfKzI1Dtm9mk9+QQDWAkMUS6mgK3A4mYYuBJ4rWQDSRwHngLmN8rEQw02kMRX\n" +
"wE1lm3ixySZc3FOWiZ2zaKKGx+o18eZsO3CwoaiJB2c78xSszMo39TkC3CXp1UJnoPHoNbNPkjtP\n" +
"MQLcLGlHU1IqhjFJq8zsiLuzJeXAB0oUnZB0UNJ+SV8rqrnqxRJJ9+ceAdxewnW8DbgDODdDYwnw\n" +
"OHCgDo3j5FUAwId1kA8RFY5eACrAAPB9Qb2tWcT31mFiwNdAiu5i4IMCmlPA8jTC9wqaWFAg+ZPA\n" +
"VYl9mwpob04SLypo4n/JeJroimP/Ah5OjL0eqP9ZkvyRAiY2FTDRBwwmeAad8YWE3zPLXYHQa3QM\n" +
"OMcz+RHnkwXXzEBgLptrgZXAQICNAbPgi9VOPiFfzful6IHY6ZtUjJOShgJjfHCnJJnZpKTdAXHz\n" +
"pMjIvEDBfWZ21OdAoprNF+uAK+L14YC4TklqVfiMvC9JwBxJv8dn8D8AI85mXyD35ZJGzWwPMCmp\n" +
"4hFTAdpbFT4j4/GyXdJRoM3M3BoqNHkXlzjrVUldnnGdrZLaAsWq8XJObRvoMrNj8faeGeLzjLr1\n" +
"07j8jZzVqukz7Isz4+U38bJN0kGgx8x+NLPMl58aADKGfkjR8cF4i6bPsC86JMnMxiV9G+/rlLQX\n" +
"WOjJkTVrboOuIyCnaovCZ8QVGHXWL5b0FtAdyOficIZOHibMbLLIjPQ768m+bY8iM0sDOWs4LEnA\n" +
"jQExVUlqiTvkPwUEXuOc9aclJd+fl0k6L4Cvhmed51OIkelZBJ4PKAkAtjixt6WM3+eTAbAWOAKM\n" +
"OfuWAhMBuaxxCfsCjQBc78S/khjzbl4Aq4AeZ3tbQA4ngDOShF8GGjmQiH8mMT6KU9V6mgqtfE9t\n" +
"WRG19EPxboJjY/KAABMLCuivSyO6DPi7ANlggqebqEs57GsEuLCA7kd5hKE3fQ0vkfLujsczBbi1\n" +
"oOb6PNJuwr4xXBwjujx7PZKvAHeT/9aYh10zaQh4siC5ixFgPbAMaI8T7wKuBp4ADtXJf4uPkdOB\n" +
"vXUKNRIvpOWd1Y2fK+lzhRVuzcAuM+tPG8j8eZqoXirlN/CS8J2ZnZ81mNaNlySZ2SFJ1zUkpXD8\n" +
"lmdCyjEiSWa2T9Fb2i9lZhWInWZ2dilMRN88b8/Cjb1l5uzCzVSAl5tk4GcC67QihlYAbzTIwJ/A\n" +
"c8AFDTWRMLQa2FGSgV+JypxLm2YgxdBFwKOEN8KngO3ABjwb4nko7f9akgR0SOrV9B/Oap8/FDU5\n" +
"qs5yt5n9U5b2v8i29BvbxMLkAAAAAElFTkSuQmCC").bitmap,
contributorName = "fankes"
),
IconDataBean(
@@ -300,7 +329,7 @@ object IconPackParams {
"OpgjkLRV0sfpXq8KmVAddrCTNChpLLEYVRhXNoMymOB7mLIX1p3U76lYRAsYDt2/wvOUXEnzxAIY\n" +
"wLH02nPT30O2ccYoWVf2mYR/Hh0m23dsP9myltlXk9PJlhkuB052+v8F+AL4CGjWln9N5l/CCEZS\n" +
"HWRiiAAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xff73aee6.toInt(),
iconColor = 0xff6bb8f1.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -443,7 +472,6 @@ object IconPackParams {
"AUp2ybcMlUzSadEXzrnfko4kPRjyLHmQdORjiziVZQgbeyjZx1pI9EViSZKvbpDwy/JSPrntiXWS\n" +
"2xBap7MtuLa2mTe+6fl/f3zTZJJmXUvUYJZJuuvaogZ3maSzri1qcJbsD7SZcw5JJ77huXMl6cQ7\n" +
"55DYnxD+AevUWpo12Yg8AAAAAElFTkSuQmCC").bitmap,
iconColor = 0xfff4b700.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -472,7 +500,7 @@ object IconPackParams {
"8WQ2/vs8R8yPtbzrGP4qLCKZ8uQDM89Pj3VK7xTpN7v3ab5kgCZ4Hygd6s56lOQHP9aSjFYc4c8+\n" +
"2VfYlJq0hF7XGuybTcBhjayij9UTtwBmnercUFCSgCWZ9EXjPTb6v5Y6/QnBGzCFeMMip3K4h3h8\n" +
"45wzya4+GPQvC0oCqCGSLReCbSjvIH3TXm97/+M//kH8BEhmToz+KexyAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xffe80000.toInt(),
iconColor = 0xffe89b26.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -891,20 +919,16 @@ object IconPackParams {
isEnabledAll = false,
appName = "小米视频",
packageName = "com.miui.video",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAK0SURBVGiB7Zo9aBRRGEXvZ0RFgq2FBhG0URKwlICIomKTqLAKBpRgo40REksxsRMT\n" +
"AmITGyVKBJsECyslWAj+oGsRQRBR1M5IxM4iHIt5SybrzrzJ7nNnlD3lvjP3vcv87OzsSC0KClAC\n" +
"5oAysMF9dp10LjjvuMebjM3zzOPudV6fxysDw9UlLldJ07Gxh57AI84b8nhXnbcR+J7ifQQ2J6yr\n" +
"FqV4kXINYdyNrQfepwQtADtWuAe7Pd5sbG13Pe5cvEgS5914lyesDLQ5d8bjHnXeKY93K+vhmKUI\n" +
"wCHnHPN4085bC7xO8X4BXc694sm85LytpByOWYssAFucd9HjXnPedmA+xfsEtDt3ypNZct6BJCFr\n" +
"EYByzJ3wuGect9/jPXXeOuC5x+107rlagyspAnAv5j/2uN3O6/d4k87bSfqV7AOwxrmj1YOSZG5w\n" +
"+fU4BTMbJjrU+j3qDTObz5CNmY0AvZJ2+eautd7K5/8FK94jRcTMhitF8MlFxsxsVd6LCEWrSNFo\n" +
"FSkaqwPn3ZT0SNImSQclHQ6cn47nNiIrpRq5J4EXgfITCVlkrrpELLsNGAS+BJinJlK4c+Rb0oCZ\n" +
"LZrZmKTdksYkLQaacxlNO9nN7KuZDSkqNBU6v+lXLTN7aWZ9knolzfr8rOR2+TWzB2a2T9JZSe8a\n" +
"zcv9e8TMJhQdbiON5OReRJLM7If7cXSn3oxCFIlxv94Ni1bkVb0bFq3IiXo3LEwRoluc8Xq3z70I\n" +
"0AncVgPnhxT+7jczRE8aByUNSWpvNC+XIsBpRSU6Q2U2tQiwR1GBntDZTSkCdCgqMPC3J2qUn8C2\n" +
"hOwB4HOAORIJWQSiv+gq/1x1AD3Ak0DZqUhLj0xbTxqLQqtI0WgVKRqVIm9yXUVjvJWWiszkuJBG\n" +
"Wf5bn6WXav4V/nyppkWB+A0UKO3gohxbnAAAAABJRU5ErkJggg==").bitmap,
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAHiSURBVFiF7Zm/axRBAEbfdwQrO4uQJq2k90dMkSJICkmjSAoLCTGYlCks0iWpxX8g\n" +
"IiKIjShY2AhimxQpNIKQIFwIBjSp7JLmS7HesYTL3oadnbngvWp2Z/n27TAzuzsDFxCdVWF7EBiJ\n" +
"6JKnKalZ+mrbi7a/Oj3fbC+VEX6T2rQDn4qEp1LbFXA379rIlR+X7kPxeWr7UuugPRBtHwJXkiiV\n" +
"Y1jSHvxradsj9LYwwGCr0Dh9ooe53Co0iq7qVfrSsehLx6Kq9CrwKoTIeagivSppRdIMcBV4G8ip\n" +
"K0G6h6RtSdPANeBjiMwigvZpSZuSpoDbwJeQ2XlqGYiSPkuaAO4DG6Hza509JL2TNArMAVuhcqNM\n" +
"eZJeANeBJ8Bu1bxo87SkI0nPgJtUnGmiv1wk/Qb+VsmIKm37ju0PwKMqOQOBfAqxPQnMA/dC5NUq\n" +
"bXuCTHY6ZG4t0rbHyWQf1JEfVNr2GJnsw5C5pwkibfsGmexsiLxuVJFett0EbhF5zaRqS78MYnFO\n" +
"/ss/lyT0pWNxoaV/JbUoR/vLsAEgaQc4SKZTjj+tQr57rCcQKcs+Z0ivxXcpzXNJxx1rbL9Os6VS\n" +
"yPuuj2R7wfb31Ka2f9ie6eRYtPk5RLbclYI9ST8T3btPmxN1pTrd8xQi1gAAAABJRU5ErkJggg==").bitmap,
contributorName = "fankes"
),
IconDataBean(
@@ -959,8 +983,34 @@ object IconPackParams {
"XJeAll4JkTEwEPid8h/M3cBkYECu3zfAJGqL0qol0GGgNzZ3pYEmAHuAdyWG/gP+SEy/qDCe4jTw\n" +
"U58FKAg0EthI7T5xxRPgGLAg1IeJESYFMFK1F/75PwxI0vPM8Ui19+s9MfWbaKKJcnwCIC7Ye698\n" +
"lvkAAAAASUVORK5CYII=").bitmap,
iconColor = 0xffecc833.toInt(),
contributorName = "fankes"
iconColor = 0xff29cbb6.toInt(),
contributorName = "fankes、naicfeng"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "小米音乐",
packageName = "com.miui.player",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAOBSURBVGiB7ZpdqE1ZAMf/azCahrxwY0LqUpgZ6YrCPJBIRJTrwQMejY/y5oUi4/q+\n" +
"zMPUECEe6FKUPJB8PLjiwc3wIpOP8T0vY540pZ+Hs7e2ffbeZ33d+zLnX7tz1mqt/8fae6+z1t5H\n" +
"aqKJ/weA6T79+veCkR8kTZQ0OnMg6amkZ8lnjzHmaQnFEkndrrpRggAzJC1Kju8t+/wp6Yak68aY\n" +
"k0ldP0njfDwEBQHmSFonaalH91ZJryTdytStlGcQLwDTgBP44QFwBFhSwHs5adPq6sn5jACrJB2v\n" +
"aPKvpL8kvcgcabnHGPO2hHe9pLlJcbWkLa7erAFsKBnlrYG8rcCzHOeBWL7zYpcqLpfQIBdKeI/E\n" +
"8p8KnW1w3T8EhnhyH2rAfSZWiK0NhFJs8+D+xZJ7fWiIxZZCAB+BHx24bzlwvwHGhwS55iAGcMyC\n" +
"sz0x5opTviHWeogBLKzg3OTJmWK1a4hhwGNPsZsFfMuBm4EhAK64Bvk5UHBNjq/RrOeCKUWevyrJ\n" +
"MtspeT1+BYZmyrsC+bJYZtUKGBxp5HbmeDsj8f5jG6Q9kiBAW4Z3OH6zVRHm5X0XXVptBXW+2Jd+\n" +
"Mca8UbxL7Lt8RVEQr6VGCWaTWa4bYw5KuhuBd0S+oreDSFL+h2xPBM4+PyOS9C2wPS0YY85KOhfI\n" +
"aXVGBgaKFGEzkB3F/YF8dYNdFMRuenPH53WYMaZb0sEArvf5ir4MMg+YnykfkFS47bVAXZCiPXto\n" +
"kHuSrqs2O70ua2SMeQ7sk7TXQ6MuSB3wX/UC7AAG2boB+gN3PHQab62BUZ4h2m0D5PRWeGhNsCV3\n" +
"3VB5hcjonXfQul3EUbb6vezgo8sY0+Vu/wu4PPq5aN0SaAM+WI7QLHffhZoXLbQ+kFmI2hJ32KSI\n" +
"ESLR+81CrsOH2Gq7GzFIo8dOj4FhZf3L7hEZY/6W1BnLaAR0Jp78AHQ1GKlY90jVc67QyeSzyMsK\n" +
"keBlOTClgv9ljAyp0LgKofvAmED+qgfkcV/8AGMrxK4CX3vyHq3gHRs1REa0pWL0zgMzHbimAt0l\n" +
"XJeAll4JkTEwEPid8h/M3cBkYECu3zfAJGqL0qol0GGgNzZ3pYEmAHuAdyWG/gP+SEy/qDCe4jTw\n" +
"U58FKAg0EthI7T5xxRPgGLAg1IeJESYFMFK1F/75PwxI0vPM8Ui19+s9MfWbaKKJcnwCIC7Ye698\n" +
"lvkAAAAASUVORK5CYII=").bitmap,
iconColor = 0xff29cbb6.toInt(),
contributorName = "naicfeng、fankes"
),
IconDataBean(
isEnabled = true,
@@ -1013,7 +1063,7 @@ object IconPackParams {
"23Sr8S+B4+Rmkt/Ugz1AjisVmqaZvUj6MPWEaGam3hSpmqW0EG6AdxVOp3LvV8DzfR+iL8xd4P0Y\n" +
"ArwErgQJMRDoAfApQIC3QOZf0SECzdPb5O0UMP8VeArcKuLF9buqI9ARSbOS5iWdkTQl6Vj8PCVp\n" +
"V9KOpD99jw+SNszsSxkeampq0vkLMZsS+4iBecAAAAAASUVORK5CYII=").bitmap,
iconColor = 0xffe2c430.toInt(),
iconColor = 0xffeaa833.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -1043,7 +1093,7 @@ object IconPackParams {
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "阅读",
appName = "多看阅读",
packageName = "com.duokan.reader",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAMYSURBVGiB7ZrPq1RlGMc/z7gR8se2gshUyrJFdMlcRFx0YwsthBZhiEElIiX2D+RC\n" +
@@ -1088,7 +1138,7 @@ object IconPackParams {
"vim8Aogzj0ytwPXRp4hh1j3JAajc4AnCezYWurGaIz8GaxsLEfFGwKF8ZIDypyRN4glGJy8yidg1\n" +
"2EM4HW0LCwC9QnYRAo9rM7WcF2syA/pPNprClnV/MKDIRGwnlJmwqU84HEJxQ4QmPNJXQjHJK+Yf\n" +
"PIewtmNUIpB7/lSGFIyX0x+eucnaBocfns2lpg/P/gI89K2h8DX3SQAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xfff5d952.toInt(),
iconColor = 0xffd6bc49.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -1108,7 +1158,7 @@ object IconPackParams {
"oUEVZoHLAxOIibyuIXwITFFgn9aEyJmKEi+BYWcCcYDPJSUeus7+B0Tb8KLccZ07FfIP2eL8dJ03\n" +
"q4uPSrIN6FwkE+B2gVm55jpvJth3+wA45ipn7gbRGHNS0n2LWtslnaqcqGmAyZwZ+QCcdp3TCqIj\n" +
"mSSfgDHX2QoTk3kKnAe2uc5UGmC/6wwej8fj+Sv4BUjRcEDGSSFRAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xfff1c12d.toInt(),
iconColor = 0xffecc34a.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -1128,7 +1178,7 @@ object IconPackParams {
"oUEVZoHLAxOIibyuIXwITFFgn9aEyJmKEi+BYWcCcYDPJSUeus7+B0Tb8KLccZ07FfIP2eL8dJ03\n" +
"q4uPSrIN6FwkE+B2gVm55jpvJth3+wA45ipn7gbRGHNS0n2LWtslnaqcqGmAyZwZ+QCcdp3TCqIj\n" +
"mSSfgDHX2QoTk3kKnAe2uc5UGmC/6wwej8fj+Sv4BUjRcEDGSSFRAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xfff1c12d.toInt(),
iconColor = 0xffecc34a.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -1400,7 +1450,6 @@ object IconPackParams {
"kn5ETP1se3WMZqmlFbusDsUK9lKQy7avZneSArA1sC/ep2r2SkV2pwr2QpBTtl+kCrYd5KXt4zkE\n" +
"SwVpelevfVEKpc2KjNj+nkuwrSAPbJ/PKdjK0rK9LbdgqSAL/T4YLiFYKkjd77UJ26H/HNsDWAXc\n" +
"n3f3Hi2pWeTpdxZ+/wLYKOmm7bBPnYH8AqH34VsrgGUmAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xfffbdc00.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -1796,14 +1845,49 @@ object IconPackParams {
isEnabledAll = false,
appName = "中国工商银行",
packageName = "com.icbc",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAADbSURBVGiB7ZpLCsMwDESl4oOlJws9mdOTTTdZxkrxhwxiHmQTY9kPzKCYmCXBAWxL\n" +
"CrsfV++XrQcAC+oe7v6+GgBQzWy6zGt2waeQCBsSYeMutS6T56/Ca+K3NteLRNzdBxadTrTXNEdL\n" +
"ImykESnR4EjCqGnsJM3RkggbEmGjmNlnYP4+ayMnI3vpA8CGNs0uFUAN5nXHcpqjJRE2JMJGiRLm\n" +
"AXYAXZFebEEnOoDiVyJspBEJv9ltTRP3PZ8emommm0Y2JMKGRNjQlekNujLtRSJsSISNNL85peEH\n" +
"6cabOwaCnhcAAAAASUVORK5CYII=").bitmap,
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n" +
"bWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp\n" +
"bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6\n" +
"eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2\n" +
"MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo\n" +
"dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw\n" +
"dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv\n" +
"IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS\n" +
"ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD\n" +
"cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJ\n" +
"RD0ieG1wLmlpZDoyMTU2MUMyOThGOEUxMUVDOTQ5NUZGMTVFMEJEOUZDNiIgeG1wTU06RG9jdW1l\n" +
"bnRJRD0ieG1wLmRpZDoyMTU2MUMyQThGOEUxMUVDOTQ5NUZGMTVFMEJEOUZDNiI+IDx4bXBNTTpE\n" +
"ZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNTYxQzI3OEY4RTExRUM5NDk1\n" +
"RkYxNUUwQkQ5RkM2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNTYxQzI4OEY4RTExRUM5\n" +
"NDk1RkYxNUUwQkQ5RkM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBt\n" +
"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\n" +
"UyV45nFEAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xffa90000.toInt(),
contributorName = "fankes"
contributorName = "fankes、naicfeng"
),
IconDataBean(
isEnabled = true,
@@ -1886,7 +1970,7 @@ object IconPackParams {
"JrSJ1wg+mtEQTphvCgyRb4O6hDCDBYTY3tQQVRANp/ViW7P9TwHh9ylp6G2270QAPTlCZH890AyQ\n" +
"vMHto773gTONGmHeaba/XAiE6Wm2r7rghdnabD8NIQ7zetk6/wGsJc5dvdleEwAAAABJRU5ErkJg\n" +
"gg==").bitmap,
iconColor = 0xff02cbf4.toInt(),
iconColor = 0xff3e6deb.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -2026,26 +2110,20 @@ object IconPackParams {
isEnabledAll = false,
appName = "哔哩哔哩漫画",
packageName = "com.bilibili.comic",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADcAAAAyCAYAAAD4FkP1AAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAPtSURBVGiB3ZpLUttAEIa/drElOCfA2WUX3wA4QZwLJBwgVSEnAE4AnAByAswJbG+z\n" +
"idllBz4BcILOQiMzkntGI0t+hL/KpddI6uc/0y1DAKraU9ULVf0TGvPfQVW/qepIPWxapkbwvPSk\n" +
"BjYt39Ioe+ktKdcB3m9aiFVhBxgDnzYtiAVV7VKU7UVEpqn37wDJg9cFVT0ERsalZ2pEmqhqD3iI\n" +
"DhKReuI1RyjX68jSEZFH4KU1qdrDrOkDOm67daEJPDZ9wDYrN7ZOunxMQq5cYyutAG/ac60pt42e\n" +
"Cxm8l/qADoBjzK2CiDxjs3g95RzuG0uUCLdQP1XVa1Xtq+rYW8r6hBFNF1XtquqB+/XcLz/e3fHG\n" +
"Pkce0q+z7ElAHzhz+zMyJQ7ccdcb558PPSdfyZy77anbfvc9Z1Kv8cI2UDaUb9h+4Lx1PZpOndjF\n" +
"VaGU4z3C4Wednxu6iitSPbcKTNy2R9FDPmEEUyUFvnKNHrQEcqvvUfSQr5zluf3UF8yVa5kwUpC/\n" +
"r+9ofwGB8+WpYGKMAdJzLnk9VwNlY/7CFnTpKWqndDwhTr1tYgocuS0ichwYV5UuY+/n43fhqDSZ\n" +
"+jhjQ1DVS0OefvWdi54bY3tuFWGJE/KAjN77vNL8uYjknrA8lzTvlpVbNy6xjTnhNcyqlmBD4LNx\n" +
"6WuZUNY914Xe50dKFWOGJvJ3qWy5KpIJeWXP269SLkQ4HwvKeXG+LoSUmxNGg/l3N3lt6RqkraJB\n" +
"5833XNAhFqGE5rqRqoZCYEoWHlNgVtPaZllTKrPuKXaekwrWOmwZm1sKU4UzwhgYAneh5ZVDqGbz\n" +
"IyV2f/CaFZZt5F0XGAA3wJOq3kZacim9kjIjzo0Ri5J11XMDsrAeGUouo1wSLOVWWR0ckil5nRNU\n" +
"S9WI2Xq3lEut634CVyzHdsfAg7dGtKoB38MLqVKKANOzTTzXFZETEekCX4C7xPvm9wMXNd9ZCwvK\n" +
"VTCbCREZisgA+EDWhUr9QpNb31LOp37LM1UVe5BQUgrEBfYTkUcRORORWNPHRx7SyzSCKpdgIeVS\n" +
"vLdnnXSN0lvi82KOIYRJJbVuCyGkXIrVF17shBmRUX8VXoAT79giFX8iL0dTlHCgmedwn5zz/WMy\n" +
"xVKs/QIclvLbCr2qBm0UjZQDei4Mr4Fr0irkezLFytERzTtDpv3INSC8tkyl5gEZnafmxhVwFmBk\n" +
"651+6TMA+8uqiEyt/wc0bTP8SBw3A45j9aKIjEsCzjBCtU7NGVKure7zjMxTN4njj4DHJb8X3lEM\n" +
"47/B/3Q0+M/XjIzihxuo7Atoo/s1IcuXKTDepq+0MeV8N/s9xLxDvFGvpOAfWYvqI/JlEOsAAAAA\n" +
"SUVORK5CYII=").bitmap,
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAKcSURBVGiB7ZnPSxRhHIef79APoowg6hAVglR4sPDaJSHwEHUo6NKpk5co/4CgrkJ0\n" +
"yQTxlN4sKugYhh2sTqXrSTBFwoyKIujHwYJPhx0jx3dmZ2fm3VHZB5Zlv/PO+36ed2Z2Z/aFJk28\n" +
"YLUaSNoCHAd+A0tm9sV7quq4e4EDwFZg2sz+ZOmkW9KApAlJy1rNoqSbkjo9hO8M+16MjLkcZhmQ\n" +
"1J22s0Gl47ukngIlesI+0zAY3d8inX0C9tWZ4ZqZ9TuCdbkam9lzR9urwJ06x/1sZvvXVCUNpZwN\n" +
"FxcltUu6Lmk8RfvxsG17uG9Whv5NUChxHnhU54ysFy6Y2WOTtBOoAG1lJ8rIHHAiADrYuBJQzd6x\n" +
"IrLRaYqsNzoCYLrsFAUwHQAzZacogJkAmC07RQHMBmY2BoyWnSQHo2Y2FoQf1twrbSD6AQIAM3sB\n" +
"9JUaJxt9YfbVSBrJcQPXaEYSFSX1SpovO2UC85J6Ux0vSefKTpvAGVfmwFUEjqQyLodDrmKcyFGP\n" +
"QfJy0FWMEznmMUheDruKcSLrmU0j8t5V3PQiCx6D5GXJVYwTmfAYJC91HZE3HoPkpeIqOkXMbBKY\n" +
"8honG2Nm5nx+SrrYhz2FycO9uA2xywqS9gCTQKuPRBn4CLSZ2U/XxtgjYmbfSJiBEngQJwE1Fnok\n" +
"7QJeUv5fRm+B02b2Lq5B4g+imf0AbhedKgM3kiRSI+lhic8fd9NkrLmG+J9MhepaYiOZonpKfa3V\n" +
"MLUIgKRfwI6sqerkGXDZzBa99C7pfgNOp2FJ27wIRGSueJS45V0gInNSxX4JPJF0tqESEaFLkl6V\n" +
"LVDXxZ6EpFagCzgVvsfd2iwAr1deZva0iPELE4kiaTvQAuwO31uAOTP74GvMJk088Be/qJb9kyEC\n" +
"bwAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xffd3618a.toInt(),
contributorName = "fankes"
),
@@ -2109,7 +2187,7 @@ object IconPackParams {
"7/t/T5a8zbX4crn8jKSjkup9A2gqMr9ed849R/J2kt1Ipst8RFH08WUrS4lGcmD2YeS6RVutEDIb\n" +
"WLVq1XFJVUk7SqXSW/KdeS4yGxgYGHgDySiMj4/f2HRFGdFQMSfpqeR4e3PlZEejBkYAOEkfabKe\n" +
"zPgfrqzeQT35+oQAAAAASUVORK5CYII=").bitmap,
iconColor = 0xff7fe3ff.toInt(),
iconColor = 0xff6ba8e8.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -2520,7 +2598,7 @@ object IconPackParams {
"2SCekiREW0lRkwc982M4sq+K2J8+bZzZb3SAFeBNC8aawhtgpZPe7bg8ajY1cNnMuv2gTdvj6sYg\n" +
"+lc53r8rHJmKK60zKo8rjhSgv5PY1GlvHfQUONKLZWfTJLcipkjO4qdo/4bEC+AB8DD9vW9meVtQ\n" +
"/AOiEUtV2iHH4AAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xffee0000.toInt(),
iconColor = 0xffdd5333.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -2576,7 +2654,7 @@ object IconPackParams {
"XnmuH4eY9cSfDE4C32KGihaiyn3E+0CIp0DmW56QBGYCjwNfGse7gFvG7bjoXz/briyXX1fQOuLz\n" +
"+xDxe+JSv2gl/vROA2B3uXINSSIR9SRwcQn2j2bMh50u2wn7PA3Uichh30/RxG9MGvIoURQ9XZbk\n" +
"Kqiggv8u/gGVZUO4tuzkNQAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xfff9d084.toInt(),
iconColor = 0xffb71c21.toInt(),
contributorName = "fankes"
),
IconDataBean(
@@ -2888,7 +2966,530 @@ object IconPackParams {
iconColor = 0xffb62934.toInt(),
contributorName = "scrpr、fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "Jump",
packageName = "com.vgjump.jump",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAUDSURBVGiB1ZpriFVVGIbfz0uRmtKUVk5ZImoqkanlJUOLoAtdzKxMoqKSNKOIqIik\n" +
"+mH5IwoJycgiSDTGICEwLamEHG+ZTmqmkl1MJ0vzxjg6mT792HuPaz73mfHMOfucfP/MrPdd37e/\n" +
"d6+z1zp7rWMqEoD+koZLGijpMkmVks6R1DHuUi9pn6Q/JG2RVCNppZl9X6waWg2gL/AK8B2tx0Zg\n" +
"OnBlOQxcDXxUQPG58CkwuhQGzgc+yMCAx3ygZ1YmxgP7S2AiQQMwqdgmZpbQgEdVsUwsLqOJBCuB\n" +
"s5qr01owUS1pRFHuSOHYJGmwmR1JE9vkigKW6P9jQpL6S6rOJaYaAd6WdENWFRWAQcDHp9QTGFPO\n" +
"h+EU8Ziv25yJTpL2S2pblPuXLSrNrDZp+I/WbJ0eJiRpbthoHBGgr6TNJS+nMIw0s2qp6Yi8XqZi\n" +
"CsEbyT8mScBFkn4vWzmF4QozW5+MyKNlLaUwTJZOjMgWSX0C8VdJe4N2d0kXlKqyPLHHzLoa0EvS\n" +
"T04cZmarkgawWNKNJS0vPwxpJ+m6FMEbuyb+u1DSOkWTRIOk8ZL6xVqdpLfi/48rGsWHgxxVktpL\n" +
"GpujmDclPSSpwvHbJE1TtL41xLnbSuomaaikSZIeETDLrZq/hVmAEYHWzmk/Btocp90WJg34NEyM\n" +
"tQUp2ss5jCf57gDmCfjKBc53HZ+K+RrHj3Jxtzp9WaBNC/gZLm5moD2dYuSWQO9J9H4/zF1rnIDN\n" +
"LnCK61QV89MdPy2IOQC0DbRzgeOxVue0LsDRWPvc5RyQYqRryk0FCBfz6QL+dIGXuOS7Y/5ex38T\n" +
"xLzntAmB9rgcgPeBA56PtdogdoPTlsb8hwHXA9gn4GAQuNoFXhVovQO+0pm/3sUlOyy1SgHRiPXI\n" +
"oc0J8s4K+LOBncC7rn8NgDdyk+v0TszvcvzEIGaH09oA9bE2JuA7ApemFN6faAlI2g8GuSe4+M5B\n" +
"+zxgUdyvTsCOuLHcXaA9cDjWtjvt7uBi45w2OeY3Ov5JomepfcB1Bo4ATwRc9yD3hSnGK4Bngb1B\n" +
"v7pwOuzmAl4ItKMED12s3w+MdVy3uLAjQD+nbYtzzQm4dTH3muu7A/jXcbcDC4FDnIy/k+n3PhfU\n" +
"IRiNBLPUDIimxi1xXz+6D7hcw4BXg7Z/NlcDXzuultzYKOCkL4zk3gKagXtIgV7AVKJRSFAPLCda\n" +
"FLtw8szocYhoArgH+DbmRgfXqGghfkGy+bY2CHq+haBjRDPFKpqu7Lmwt+UuHKfpLmY90Il4raDp\n" +
"5JKGlwy4XNJ6Sc9J2iBpUXMfoRKhQdH70RmSUPTN+8xm+o9KHG+XdHHm5WWDg5IqkhereeWspEAs\n" +
"MLNjyYj0UXSKdDpihJmtaCNJZrZV0tLy1tMq/GBmK6SmuyjPlKmYQtBYc6MRM1sr6bOylNM6rDGz\n" +
"xtcAv2XaVdJfJS+pdehtZo2v5E22TM1st06PraEXQxNSjoMe4BNJd5akpPyxzMyu9WTOEytgjaTB\n" +
"mZaUP36WNCDt1CrniZWiLaBNmZWUP3ZKGpr30ZuZNUgaIml1rj4lxFZJg8xsT0FZyOZXDqeKJUCH\n" +
"4tyPyMwUTmzxlApTi2bAmelL9HuRrPElMCgTE87QzcAXGRioBu7K3ECKoeFEb5i/FFB8LTAbKOg4\n" +
"vNlfPuRpaqSiKXugorOWSkn+IT0saZeiWahG0nJJ1Wb2T6HX/w/46hXjH66RIAAAAABJRU5ErkJg\n" +
"gg==").bitmap,
iconColor = 0xffff3a48.toInt(),
contributorName = "sddpljx、naicfeng"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "虎扑",
packageName = "com.hupu.games",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n" +
"bWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp\n" +
"bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6\n" +
"eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2\n" +
"MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo\n" +
"dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw\n" +
"dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv\n" +
"IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS\n" +
"ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD\n" +
"cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJ\n" +
"RD0ieG1wLmlpZDoxN0EzNjZDMzhGMzMxMUVDODJGNURGQUU0RDI3NjAyQSIgeG1wTU06RG9jdW1l\n" +
"bnRJRD0ieG1wLmRpZDoxN0EzNjZDNDhGMzMxMUVDODJGNURGQUU0RDI3NjAyQSI+IDx4bXBNTTpE\n" +
"ZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3QTM2NkMxOEYzMzExRUM4MkY1\n" +
"REZBRTREMjc2MDJBIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE3QTM2NkMyOEYzMzExRUM4\n" +
"MkY1REZBRTREMjc2MDJBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBt\n" +
"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").bitmap,
iconColor = 0xffc50000.toInt(),
contributorName = "sddpljx、naicfeng"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "IT之家",
packageName = "com.ruanmei.ithome",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n" +
"bWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp\n" +
"bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6\n" +
"eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2\n" +
"MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo\n" +
"dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw\n" +
"dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv\n" +
"IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS\n" +
"ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD\n" +
"cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJ\n" +
"RD0ieG1wLmlpZDoyOTQ3NEIyQjhGMzMxMUVDOUFEMEQzQzEzOTVBNkY0NSIgeG1wTU06RG9jdW1l\n" +
"bnRJRD0ieG1wLmRpZDoyOTQ3NEIyQzhGMzMxMUVDOUFEMEQzQzEzOTVBNkY0NSI+IDx4bXBNTTpE\n" +
"ZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI5NDc0QjI5OEYzMzExRUM5QUQw\n" +
"RDNDMTM5NUE2RjQ1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI5NDc0QjJBOEYzMzExRUM5\n" +
"QUQwRDNDMTM5NUE2RjQ1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBt\n" +
"ZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ttsLNQAAAkFJREFUeNrsmj1Iw0AUx5PaWqUiKloHQbu4\n" +
"uAiiCOIgilKKODmok5ODk5Pg5KibSEXFWUcXV8Wls5uTi19YRcFvqra18f/oCSHks01sr96DHyTN\n" +
"3eX+ybu7dy+VFUWRKsF8UoWYECKECCH/RIhfdTzHCIFsmfdbZn1/BnGwRyd9YASscPoy+kGjjAXx\n" +
"AAeDdMKxZyVpjHRwLoKsjlzrzUGFBDgD1arfKMZJgy4woCl/xMqHiuhkBjSBGKgxKJOS4FoJkFOs\n" +
"LQNiFJsZENWpM2ZS3gkt4NKkb7dOpt8qiyer554Bl1wnpPGCotYRmYkxsoCHY8DP7u/agqgUeK1Y\n" +
"s2ybl5VdsRLjtZC0S+08gg+7IYoXNgM6QQM7D4I7sGVSZwL0gk92/gXCoLmUQmYZarsC2yauMg2m\n" +
"eIh+7y38/ZWXMN7qnrLYWAkhQogQIoQIIUKIECKE8CuEItacyfVvl/qU81pI1iLEfrDZjpXggsJ4\n" +
"JxsrypLMS/n0alDzpmg312OznTawyOr5dAQOFSKEcr8nDjpRrvZETyQJXjgXkiIha2CTcyFxmX1n\n" +
"J59fYBv/Wsm7Dz00I1G2MsLuYzYhnNOTNhjHv1nPd7AL1mXNHwao8XrJRkKsCCHUuVGwA1oNyt2A\n" +
"cXAq6eeUZdUMl08buZQtL4QIODbIrlPmvd1Je6Vc2S/AMFjVuRZ0uDSURYiyBCZpCtWsTVzGWvug\n" +
"GxxqxgCXQeM1iIINNgmEvQpR/sJoVluW8ln8lNMQRexHysl+BBgAdOCwmTp9yf8AAAAASUVORK5C\n" +
"YII=").bitmap,
iconColor = 0xffd22222.toInt(),
contributorName = "sddpljx、naicfeng"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "邮箱大师",
packageName = "com.netease.mail",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n" +
"bWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp\n" +
"bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6\n" +
"eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2\n" +
"MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo\n" +
"dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw\n" +
"dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv\n" +
"IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS\n" +
"ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD\n" +
"cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJ\n" +
"RD0ieG1wLmlpZDo2Qjk1MzRGRDhGOEUxMUVDOTZEM0FDQjI4OTNENjZDOSIgeG1wTU06RG9jdW1l\n" +
"bnRJRD0ieG1wLmRpZDo2Qjk1MzRGRThGOEUxMUVDOTZEM0FDQjI4OTNENjZDOSI+IDx4bXBNTTpE\n" +
"ZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZCOTUzNEZCOEY4RTExRUM5NkQz\n" +
"QUNCMjg5M0Q2NkM5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZCOTUzNEZDOEY4RTExRUM5\n" +
"NkQzQUNCMjg5M0Q2NkM5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBt\n" +
"ZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WYn/OwAAA8FJREFUeNrsmkloFEEUhnuSSTIk0SgaNB4U\n" +
"N9DxEONCFFQQJaLgQUVcQERFBTcEFTyIggguB9ccvKgX9SRevAgibiiiYg6SxJ2okRgT4hpjkkm3\n" +
"f+FrUhav2urpNpOJ8+AjM7V09+t6Ve+vmkQcx7H6gmVZfcTCdqQcDEhXRyKgFOwDl0B+KhyJBui7\n" +
"H0wHg8BYUAgS4Gu6ObIATFbKWlM174Lc9KMmzDKrlk+bR1EROLTCDO+EYduBoAzMBbvAOzAqqCNt\n" +
"TJntY7KLZfooqASPpfJxYAWYCHIkZ8VqOASMkdq2m4zIFDDYI+6HM2W5YAn4oemTB0ro2vPp80mp\n" +
"fjs4CGKGL8P2cmQZ2ARmJTFK+ZRL/FgH/V0Hjil1F8E9+jwU7NEmM0VrbQMnmHbfwVtmRAqZN/QC\n" +
"dDHXKKEYV20ExXo9GEZl4qEOgL1SuwJ6DtlqwITfPeAIUerw9hCUSe1crjBtP4Mcpq3guOb6/cAk\n" +
"pew9iCn940zfardeDq01zNv6AlbSWzZZuiM0DzqZumxNVPx0Vx7JPlF5UnlkGlPfoHHCK/ll+Wzv\n" +
"5WRSjhQx9V09lEvsoApBdsTpTZIjbEcyO8QeskhfccROhSNhzzchg5rCUL+tPkRjQQgr4Bvl+31w\n" +
"w9QR+S3OoL25a3GmvRB7O6RkJtTrVHCGkmsyJqRQBUkZWXnvBs+6l6puCVDNSIAqkAXOOclbHSgC\n" +
"hzX1QtIs1UiPtUp5B7gLFtNzRTmJwlkLmAMWgttKOAkpXqy0T9BwJ2g5F31OUTwX+hiFb3SosQFU\n" +
"gUZS1jMpEo6AszQi5SahJfYjr8B4eWKRXQaLGJVcobmWnzyVQywHddLusIU2ZO7ZWbHpHBEC8LWm\n" +
"LqbJS/1DOBISb/8Dsw3Q7lL/tvx2Wakx+3/L7BlHMo5kHDF8/p50JOh+J+FxlBTIkVxN3on4XFJt\n" +
"Q2Wcy6iO+jDUbzNTJk7o2zXtuYTWSLkqavD2Vyvf74Cbpo50eNQJ+bBKKevUtJ1Nek21q5LMV2V/\n" +
"XHpGcZ+dShuh4Z6YOiKOKTd7CLs2RiOpp4kjSfzFGF12SApJ2UaDao/n2gKuywUmjlT+g4lfC9aD\n" +
"p5qFwLb+PAh3SLReI9X7QL1glJlMNt2omTZIdogOCDF5C5ynEdXZc1eeK2HbpusgOyIe+jS4AB5Z\n" +
"Po8sQzbfP6rKjmy0uo/w0y5Ryx1S6YTDrFpWsiOSSsuTQkpM8pp0dSSbImIreOmRVPXHPb3kv4NE\n" +
"3miw9L89po36bQriRG8akczGyrVfAgwAdEkarANjcnYAAAAASUVORK5CYII=").bitmap,
iconColor = 0xffec1a1c.toInt(),
contributorName = "naicfeng"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "阿里云盘",
packageName = "com.alicloud.databox",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n" +
"bWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp\n" +
"bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6\n" +
"eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2\n" +
"MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo\n" +
"dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw\n" +
"dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv\n" +
"IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS\n" +
"ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD\n" +
"cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJ\n" +
"RD0ieG1wLmlpZDo5QzAzMzJCRThGNDMxMUVDOURGNkVDNDYwMjkyRDNFNyIgeG1wTU06RG9jdW1l\n" +
"bnRJRD0ieG1wLmRpZDo5QzAzMzJCRjhGNDMxMUVDOURGNkVDNDYwMjkyRDNFNyI+IDx4bXBNTTpE\n" +
"ZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjlDMDMzMkJDOEY0MzExRUM5REY2\n" +
"RUM0NjAyOTJEM0U3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjlDMDMzMkJEOEY0MzExRUM5\n" +
"REY2RUM0NjAyOTJEM0U3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBt\n" +
"ZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QmReQwAAA3dJREFUeNrsmk1IlEEYx101rUTMinC3JPow\n" +
"V4pKSgvStIhILaE6dAr20KXoC4q6BdWlSx2i6CJUiFqHqKDswwILDEoPFmn2ZamQtH1hBZulbv+B\n" +
"R5Btd+Z5553ZRHzgd5AZ39n/zut/5nkePeFwOGEsRGLCGIlxIaMtkg08YyooBMXAD7LBpBHjP8E7\n" +
"0AqaQQv4MRqF5IO1YAWYD3wR40PAC9KJfvDItBCPpmtNATvANrDc4e8OggegGtSRMPchhDikErSF\n" +
"zUQTKNL4DP/gZHImOBW2E3vcCuG+WtPBbbDMovFcAgHdV40jRIh4CPLi4KJ3QRkZhPFzpDZOIkSs\n" +
"Bydt7MhRcITrG2SrT0AHCIFUMI9eyTUO7L4C1JtyrS0O/ljPgjyQInmeHxwDIcbzuoHXhGslMy22\n" +
"F5Q7dJhC0M54dp0JIZuZZ8AsTbvMADcYayx1IyQRXDe99THWaVKsc86NkAWMb2qDidMYLAa/JOt0\n" +
"gDTOs6LZb4HCH+7R4WginoEayXgu1/ojhUym26wsrhg+O6oU43N1hMwAOZL532hHTIbIUdok44t0\n" +
"hWRL5neDN4aFDIB2ybhfV0imZH7Q0tXkk2Rsmo4QcaWYIJnfa0nIH8lYko4Qj+puZklIlmSsT0dI\n" +
"SPHteC0JyZCMdekI+Qg+K3ITG3GAbtm3wPcoOYpjIUFyplgxmyolpkO41nFQTgdgYIQl+3R35JVk\n" +
"vnC0UsvJ1QdwETTSz2coNxkWms7NR7Yq7llXDd2zZOSCrzHW7wS7OXetZjqkYsVGsNDyrhyWnGdz\n" +
"QAlnR0T6W6PYlZsWd6MADCrWL+EmVhWMq/xeCyJEqtyiWPc5mMgVkkS/oIpdhoXUMtbc77TSuJ1Z\n" +
"eDhkQIDINi8z1uqiNNlxyfQ0U0wV8GmK2AR6mOsEdGu/qeAtc5EgOEGpMqf4UMx8lYbjmtvabxG4\n" +
"D1KY1ilqtw1UqOuk28IANX+yKAMt5SZMFI/BOmoaueqPiCvDeRfnwpCLNt8LsIqyU9c9xAtgn+Kg\n" +
"tNGr7AGVKhE6jZ7V5BzxiAYntTMdl8kBjRYF9IODNjtWkew02IIbjnqwxHbrLRppJKjVxYf/AqpB\n" +
"WTxab5wQ/Y+V1G/Pl+Thv8FL8JRs9Q54/b/a06qYSfm9l/LxRKoFCPd5T9WYPpML2hIS9xj/p5px\n" +
"IZbirwADAFpUZLC/Lta4AAAAAElFTkSuQmCC").bitmap,
iconColor = 0xff637ffd.toInt(),
contributorName = "HeMing505、naicfeng"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "百度贴吧",
packageName = "com.baidu.tieba",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAKMSURBVGiB7ZoxaxRBGIafdxEs9A9EBBXEIgcWNsHuAiGdmM5CQbERLAWLNCZpJH/A\n" +
"xkIEDViaQgQNeCIoWEkwKfUKGy0sNCmsXotswrHuZvZ2Nzd3Zx44bmfm22++9252dvabFRls3wQu\n" +
"ApPAeeB41iYSW8A6sAl8kPSot1G9BdvPgcuDi60Wq5Lmdgt7Qmw7Tjz1kCSABMD2YtxwqmN7AUC2\n" +
"rwJPI8dTl2sJMBM7igaYSYBW7CgaoCXbW8Cx2JHUZFujOltlORKhzw7wNj0+BdxoxKvDfLV9uob/\n" +
"2xl/7T77L0VSIpaupG5VIewsKQ6cGEMry3QJmzchg76FZIdGHpI6Zf2VsbXdAfbtt8o/0gYWAjYK\n" +
"tDdO3aG1lCmHBFYlONnUEiJpb7GZDrm+hTR1Hysza40Eh0KGjUMhw8bYCBnkEmWJnZVvltAS5Q5w\n" +
"KeR8kEI6ecuR0BIlvT8FhYzN0DoUUpd9npEeVPE3jP/IZJWThlFIJf4rIScy5Yn0+1Om/kfB+RMF\n" +
"9Y1S5j5yruCZITv/f9s9aOoZox+qDq3vwL3eCkm/gFu1I6pIVSGzkn5nKyU9BF7XC6kaZYX8Ab4A\n" +
"74BpSetFhpJmgXngI/CzdoQlKXONdCWdKWq0fRd4IWkvESdpGVhO29vk56Uek59UKJ1KygYSojA5\n" +
"ZvtKavPZ9oVAH8F8WMG5i02lTPOcT9l+AjxLq1rAe9v3bZ+t4rMuZYZWO/01T6afOWAqx+4oO9fG\n" +
"vO2XwCugCxQOyyYZ5P5I73ZCP1ynRIJubDZ6EmA7dhANsJ0woP2LA2YzATZiR9EAGwmwFjuKBlhL\n" +
"JK3w7/bAKLEoaWW8XqrpqViNFlH/rO6KgJwtMo/oi2d/AZEjomStBmkLAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xff5584f9.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "皮皮虾",
packageName = "com.sup.android.superb",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAPrSURBVGiB1ZpbiFVVGMd/3+HYmF0sFJpKYSjpYQoRgsyHYIJ6yJJAGEhQ6qUbkUQI\n" +
"YQQzviTomxA09WC3KSgheqgpIhJ7qB66PByloDBqKhWVMqzGkn8Pax1cbvc58+29z2mf+cFi7bO+\n" +
"vdb6/nvd9llrGw4kLQGWAcuBK4AmsKhg3AT+KRhOmtlXHh9tHgFjwEbgcU9hfeI4cADYD3xkZofc\n" +
"OSWNSzqswWSyiIhB592s342MiEngTXfT1cd6SXtzLZK21fyUy/BA2/9GFHEzsPv/eZg9ZWP7ot21\n" +
"HqrJkapsUJhZacTWWKhCAO6H0CIra3akKqshCFnW54p2AHcDWwmLWpa3gNuBp4CfS5QfGkLS032c\n" +
"VabatUlapQsX2VcS+2SFeoYawEUlnoKXb5LrPcBIxv5iFDEEPFmhnhWN+e+pxHEAScPAXTn2ozFe\n" +
"B1xWoZ6VzQqZU/4AvojhGmBTTG87enWHfL/2qP5mVSHTwAwwY2Yn24mS1gNLgcUx6VSH/EsJD+Gn\n" +
"in40y3atf4FHzGyzmU2nIiI/xng5gJl9D/yQU866eexeSgn5ErjUzKa63PNJjK9M0vbl3DeaXL9c\n" +
"wpc2zaLT3u+eUnXur8AHktYk6VM5Zd6X2F9L0mcL+DVeVMid3kek89eMj2M4FX+34u/U6Vbye1LS\n" +
"9gJ+bSoipFtX6iQmz5m9kkaifU+O/dEkfyvHnseWIrPWC0WFmNlOSa8SBvW1wH4z+zqxb5X0fLSf\n" +
"jfZ00O8DbnRU5R4js0VF9ApnizzonbVqE+JkkVeIa7bKojB75b2atHvCaJ6tBO6Vfa5kBbsIC91M\n" +
"mhgFTACrgM0ly05xL4h/l6zgN2BMySZBZDzGf5UsN4u7RcoKeQNYA0wobLseAu4Fnoj2t7tl7tQt\n" +
"c+hv1zKzXZKuJ+wJPJcxbzOz9+YpwrsA971FMLOHJR0A7gAuJ4yZ983sQ0f2W53VnO27EAAzmya8\n" +
"8ruRdBvx7djBXL8HexVeKnDvGa+QrscPvUbSZ8B1BbK4hVxcwp/CSBqV1ALWFsw65x0jfRUiaTWw\n" +
"JYarShRxxitkcSeDwt7rLcB3wBHgT+B0Ep+Ot14Sw5Ikvgm4B9hQwvkUd4sMZRMk3QA8Q3iKdeNu\n" +
"kfOESHqMIGK45y6Vo1jXkrQW2E54zRgk5prAt44bhxSOurIvf4PCCZO0guobZHUz3DCzWeDTuj2p\n" +
"gpkdbS+IC+EktxM74dwZ4uvAL/X5Uol3IAoxs2PAs7W6U44dZvb5BanOraFBofunHFoYn3C4v0cZ\n" +
"U9iAHjROyCsiI2h3zFw3LUkTkjqdfPn+MCmcAY4koePbcI85CBz0fKP1H3RuHrYDyFBQAAAAAElF\n" +
"TkSuQmCC").bitmap,
iconColor = 0xffb24c75.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "智联招聘",
packageName = "com.zhaopin.social",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADUAAAAyCAYAAAD845PIAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAARJSURBVGiBzVrRVRsxEJzNyz9OBSEV4FSAqQB3EFJBSAU4FQAduAPTgU0FsSvAVBC7\n" +
"gsnH3YFONyvJvvNL5j0ecNJpd6Xd2dXahv8UJM8BfI4eb8xs9y/0GQQkX9jFaEgBU5ILkkuSf4Sw\n" +
"UjwVyhuLd7el+n4sEDABsChdMIN1veYYwHU0Ngn+PhfvnpFcJtZe1b8fLacFyRdHyDG4AjAGcD/Q\n" +
"eh2YmX1ITaiDdSiDAGCHExoEYAMASaMwrEE/0XaxU2ALZIwys5WZGaodjvEK4Es9/gmVa22cpb6a\n" +
"2QMq1zsl1kWzSI4cJrsVc1cp1iL5WzEiA6omOVPCCnWaAHn3A/zdVbtyKZ6FVKzWeogSqpoTe4Cn\n" +
"U979Mgu0jKpJRWFVj5duTlxFAO2NAZzYNLMtUJCnoI16FeWKZ9Q2M76IvEvJu4hylFrrufmjxCi1\n" +
"gMruHrM1J+GdVAkjlqSWN51K3E/FyUo8k0LNbJ0aHxBvblySfLOo2Ssue4B2gPc16jUzXkznU4c6\n" +
"X1gVt82PV+TOg7U87EiuE+PrZnNrKp8788oqeDo54wDMAmU6EPJUnuvEIsltNKdFWrmY6lsBNLGX\n" +
"zT31TnfiN4jJEDFRtebkjFI54xCkSCJOCZIFqeP6zJED4PiT8mq8EPsglynFLkhek7ysFVdEAwB3\n" +
"4T8kb4RexSShbp+sF43nKqyC8adk5OWxJHnH6vat0Nq0VPJVp7Q3s3n4IF4wQJjL+rrxBH6S3jTl\n" +
"UYOU+yllVdJNFpeZOUNgFj9IGaV25lij9gk5ffBoZp1mTsr9lMuogPQq5nADpgBuUFZV7Bw58ZyV\n" +
"Q/c+nIDsZG3qauIwYQNDuh/rG2SM+LpRk4QqT4p7dKeA534yTkiOIsNy142mUvgGbXxvmNmv+Jln\n" +
"lOf7L5FreSQRxtMyMW8IFBvlKTFC2aVuC7xd4U9pkKxsPEq/6CFoHyTDU/f5OjkKEEbVMdDH/0P3\n" +
"PEkcoTqhK5WjAO1+qSI2JIkR9ImGRs3RTdhTAD/Ee9+RZ81tXBIVgfpi2OnQkrx1clmn4I3eU3lt\n" +
"0BSgYkoxn0qmuZZYBzVxKJccNFkr9+tVyEblUdE7AC5J3kP37D08Z2S9w3GpqZinPr5MuhH9pskx\n" +
"kMwHRO5HvzWslC1109w7x8I9pTimcg1JAH5tiLxRQ1K866qxUeqknsUzT7mcUUUfZJcgde2IiUIZ\n" +
"FXdugIJC1lFkBmCWOGmFBbqbmG/8kDxn1djwOq1N4+OO5H0ieJcHKlyim8K85MW+ndgQyeR7oEHn\n" +
"jgyX+YB39xuykm4xJStGVS5cAk/5ZH5qjFIf1xyLmJWWGJb19sjE7gf6V/JjsBGsNHSl/pT70pXV\n" +
"RuXiYIR3F1Xf7gKqKrsjkNVNuc/9LMQewPioSj0Fkg8icF0fH5CEtvQrnhZKPvONoRZ2fdzMZqxq\n" +
"wj4l0qq4eAWQ/cJVDHavD7uDm4onxl9vndYJQrKswQAAAABJRU5ErkJggg==").bitmap,
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "京东金融",
packageName = "com.jd.jrapp",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAANESURBVGiB7ZdbiFZVGIafL4yETmRRiVpDJ3LKoaBiOlBGGBgSRtC5IAQvJaOLiGAm\n" +
"qKsiK6gwKMmMQIT0IsVILKIIDIxmoCBniIwxo+giiByIp4tZf212+/TvbP4u9gsb/v1+37vW9661\n" +
"9lr/gg4dOnTo0KFDhw7/FaJfgToO3NQgdRaYAY4AeyLi45L2VgJjOfpHYKL3RMR0v3XWQh23Hb5W\n" +
"n1BPzhtpoN2uXvt/MdLDhPpQn0Z6eF5dWlTXCcfVZTNcDrzp3BLtFxuB3er5+cAgjPQwpt7fQrcC\n" +
"2KaekSUXHJ+aWmMb8BRwc0HsNOCs9FwMXAOMpNgNwFZ1bUT80arnim9kPK333nO7+oz6bs26/y4/\n" +
"upm+rkjtLk7vS9UN6tGkfayViTojFZrVNWY2VGgvUnerk+r6xF2qvqV+1subl28kIvZERNWZdV+F\n" +
"9lBE3AbsADarnwM3RsSDwH711lZFtZmRjPbpillZ3kC/NZO/KXGvwzzvWhHxJLCvJLyqQRM7Mr8f\n" +
"Ud+JiHXq4kFsvzMl/KIG2r3AVOb9HnUNMDsII0f/hfYy4Msctz4ifh6EkVNK+GMNtMP8cyBWwGBO\n" +
"9pES/kiVSF3CnJEfcqFzIZ3sqkXimi2zb6gXUm6k7NvpYZS5q8EFOf5bmP8ZeZbipXUM+LBMpJ4E\n" +
"vAK8D5yXC0/A30YOlDRQdDasKenvm7JCUlurgTtKwjsjYrZC/gFgRHwKLMvF9mY7ebnioLo75Qyp\n" +
"GyvyRksMXKdurtCp3lKgO1O9U/0p5exSl6i/Z3ST6iJIV131YeCNihGZTiNxYkVO0dK4ivJdqoft\n" +
"wNk57hwgf9KPAmuBxzPcAxHx9l9v6kJ1X82oVeEFdX8L3SfqqgZ5Y+qw+muG21I4LOryFoWoHkr6\n" +
"NkaGrL/q7krtv5rh3qucY3Vdi2KWtTAyqQ4nXZWRu1LOpgzX7Iqs3qv+1qCYr9ShjK6pkefUhRld\n" +
"3shB9TX16hTfkvhJ+70aq5eoO9VfCgqZUl8s0FQZOejc0ijanbK3ylMz3EvqtPqR+qhpdypD5cmt\n" +
"LgCuBK4HDgNfRMRUSe7KAvow8H1E1P6PUkeA03PamZrzpUOHDh06dOjQocM84E8+V+euCt2HfgAA\n" +
"AABJRU5ErkJggg==").bitmap,
iconColor = 0xffbf9964.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "慢慢买",
packageName = "com.manmanbuy.bijia",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAR9SURBVGiB7ZlPaF1FFMZ/J/+aaKK1NjWJ1bRSW61FFE3FUGsrUYJbC1HcKFIU3JS6\n" +
"ERdSFwqCCwVBFAVF6qoiFYuFuLALI9iFRVqVlLbRaLGxxhjbpGmSfi5mHr3vZu5798Z7i5b3wcC7\n" +
"55yZe76ZN2fOnAs11FBDDf8nWBZjSXcCW4F6LzoNHDSzwxGbemAtsBm4Kic/o7gA7DezI4seQVKv\n" +
"pB9UjnFJ7RGbTZJOqjiclPRw3LeGBIfXA11RmZl9kcCvCegF9vrnh4DOgN0QcLb6dJWhB1iaxjBI\n" +
"BHgCGIjJuhNsDWiJPHcl2H0NvJHGKY8eYB3/ksgy4MaUL6wD+iT1AK9XsOsAbkg5Jt52SVrjJCJZ\n" +
"0Aw8BQxWsXvct0JQV9TAlxp5rMg08CJwEJioYPcmsCvDuFtwf9WVaYzzICLgFzM7ACApye5qYGOG\n" +
"cVeRwb88iKRFP9CXsc+ygGwc+CMuLILIDPBXQN7kWxZM+1bCJPABcDRuWASRt3wrAj+b2WRIUQSR\n" +
"cWAN2Wc/DToie3DIzKZKD7kSkbQReA13mBUd2h8AjpUe8l6RbcAmLmbV87gVOudl1wBXRuwncfup\n" +
"Drexo6nOBPC3/93GwlSlzPe8Z+1eyq8GM8BHuJP/WeB4zH6/1z0H/BTT7fG6HbgzqiIuxcn+q5kN\n" +
"Al8GdCNeNxTQHfW6qiTgMkpRLhsiRZ/sTcA2SeuARuD6mL5f0rW4ANAR0z0iaa3Xra/2oqKJNODy\n" +
"q6Qc63bfQkjqNwcMU37i507kK1y4LRIjwD5gLCrMlYiZPZ/neFmQ+19L0gBwB+UHX16YB74H9pnZ\n" +
"yaiiiD3yCrC6gHFLOA80SnrbzOZLwiKI/AncFJDPAt9kGKcNV+hrjsnlWxmKIPIpcFdAPgXsJHxX\n" +
"iaMJeAZXDopjFDgcXQ0ohshnwHYW3rUbgOVmVnVVJHXjVjV+FZgHvgV+jPcp4mQ/DnyMy3ijaAae\n" +
"llRx/0iqA+7DrWq8Nn0KeN/Mfo/3y52ImU0Au4ncFTzqgQeBnZJCd/ESeoEXgPaAbi9wINQpiUhw\n" +
"Q2XAIdwFK344tgBPAi9JavWVe/dCqVnSY8B7wK2xfnO47Pnl6K2wKiTtkjQdLYF7eagaf1bSownj\n" +
"DEg6JmkuUFUflLRdUrek+yW9I2ksYDclabekVZV8Ttrse3CbrTc1+zA+Ac7gLkj9lN8A+4B7cMXt\n" +
"NYRD9ijwIfCumY0sygNJKyRtKDUvy7Qivk+9pE5JOySdCMx4CNOSPpe0VVJrGn8Tw6+ZjRFLzFKQ\n" +
"X42rKNb7sa8DbsOl4RtYmKonYQlwN67EekjSEVwt6wxuv8wBw2Y2U5XIIvEqLnS2+NZI5c97s7iA\n" +
"0AZcEZEbsBz3+W6zl13Ape5TuNC+hUgNIG8inSTPunAzOuzbd7gQPQa04j4k3QzcgotaXbiJKKEO\n" +
"l4iWktGoLjORaeAE5bN8jotlm1FcnD8F/ObbaVytdtQ7PodbiVlg3sxKEbH0d2zwTi7FBYCVuDOl\n" +
"HTdRK/zv8xl9r6GGGmr4D+Efca5QYv++3I8AAAAASUVORK5CYII=").bitmap,
iconColor = 0xffd64800.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "识货",
packageName = "com.hupu.shihuo",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAFjSURBVFiF7Zi9TQNBFIRnjBw4pQRkEgeW3AEmIreogCYQkSmECmiACLsARGRBAHIJ\n" +
"FIAEQ7In2T7frfdHexZ6X7ba2/e+nVvdSQsYRiM85CFJIwCXAKYATr1Fyalbtzig/BeABYBnkm+H\n" +
"+HiRNJK0UgAba0NYuXCShQeSXgObx0rL9Rr4vHqe+TsAk9TNBzBxPeOQNJb0HZFWStJyPcdtbm1J\n" +
"3wPoR+86nr7rHYakWWRKOZKumDX57f3kSfoAMAzebVWUZCUdWwPAJ8nzfRO14yHpFgnCGRk6lxpb\n" +
"SUvqAfhJ7ZYp6YoTkr9b9TcHkh4AnKV2Cfwj+liTvMlQp1t2k77oSqQNksut8ebAvc5jE19Wx63C\n" +
"9xs/Sky6FCZdCpMuhUmXwqRLYdKlMOlSmHQpTLoU/0L6vROLdmpOu9IvhURC8DtJmifeduZkvs+x\n" +
"6db0GsAVMlyRRbIG8ETysaP+hlGUP13zl4JJa5QqAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xffd72324.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "BOSS直聘",
packageName = "com.hpbr.bosszhipin",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAMfSURBVFiF7Vk9ltMwEP6GR7+mpcFUtOEE6z0BodiCitDQsgX9pmffY1toEuoUCSdI\n" +
"9gC8OCdY5wRxTvBRSH7IY9lrE8dOka9JotFIn0bS/CjAGd1A2hqI5CWAAMBAiWIAqYg8tDXXf4Nk\n" +
"QPIjySXrY2l1gq7JhiS/k9w1IKuxIzkhGXZB+MuBZH3kb49FNmCzY9AUS7Z5ZEgO2K51y7AjqS/x\n" +
"SRNuRLzU5dFs1yOMG+sSKYDXIpKWdXhWoTxH94Rh55w31iJ50+GRKMO4jF/heND4zjX6sbKLFMBb\n" +
"EUm0wHc8btA/YcBw8Fo7Z2n2d/nK4L2U2tJDnA5hwHAZ6kYf6VPDSDfo40El38BsUYYQwCvPwL9h\n" +
"UtABgHce+QbAokS+AbCyY0cALgokRfzxhGTkcTuRp9/IkadUEYwmiqZOn5GShyQTn1ujyXESFlHg\n" +
"kSkMyzpr30kyVvJv9vcPZYBYjb0keZst2JHtSK5pskgfcgt/7nxvkqxcANiKyIrkBwBfbftnkn9E\n" +
"5CfJLfJHaw+z/ZnVdvYzsbIBgPuS+XJ5d1UYd3EF4EpExtbaoZ0MAN6ovi8dMpckhyKysDqfAGwz\n" +
"IiRHIhKLiJZVoi7pCEBEMhKRMYAm9d6c5ARAKCJTGItm5CY0FUwkIlNLvv7YJMc1zjTt7xHJR/v9\n" +
"Wulc23ZfSntfMdfcGVsjd2FdS8c11jaznwHM9kYiMgNwZ9vvRGRmFxvAuLMrx3qpo78H8B7GXQL/\n" +
"3K8vuBXyD9gV1nV5kWPFQtLOfOFQKKMc+ZqqsKVxh74dyvF4KrjEyHsA37sGYAJHFlx0VE1hgkeZ\n" +
"vErXkFTBRZNewB/R+sSDiOQsrb3HokMydTHVDb7UNIEn/veIF5WpqRUWVtYjfvkK3LJyK0b/1t4D\n" +
"GNQqt2yn0qKyQ9z7CFeC5MrjL7vCqorbU481fVzKPUye0vyxxipFdpCusAcQVRGuBRYrkWOhUAUd\n" +
"Sjzgcc94zGM9sNOklG1aPWXF81ebxEOS0xbIT9nF3xeKfECTsDc5Niurc9CDUJt/yUUwdaC2XgIg\n" +
"EZFK33vGGS3hL0MTUFwCIPusAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xff5cc8c6.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "斗鱼",
packageName = "air.tv.douyu.android",
iconBitmap = ("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").bitmap,
iconColor = 0xffff6c2d.toInt(),
contributorName = "sddpljx"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "讯飞输入法",
packageName = "com.iflytek.inputmethod",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAATQSURBVGiB7ZpviBVVGMafN4TIAomUtD9bq1ZmJQaFftEsxJCgApEiCimDKDCKiP5Q\n" +
"uEKJEVJQ0QdpCSFKw4JIxaJWSqjQLUuLcLfM1N1c1nUlZD9Y/PowM3X2vWdm7r17996CHhjunDPv\n" +
"n+c558yZOXOu9D/+XbBGBgNmSloqaY6kmZIuk3S+pBPB8bOk7uwws98byaFuAEuAF4FvqR0DwGvA\n" +
"olYKWAR01UE+D13Aynr51DW0gA5JqwtMRiT1SDoi6bikQUmnJV0haVb6m4dtktab2af1cKsKJb2w\n" +
"A7gXKCIZxloObC7ooaKGGpOIlTkJNwALxxC3HVgHnB53McCTkSRbaOBNClwPbIrk2dioBC81rduT\n" +
"fKsj+brGGvSdSNBHG8S5KO9Tkbyb6g12fyRY0+Z7kueTx7pag0wFel2QO8aJcxGPmJibagnwsnMe\n" +
"t3uiCi4POC5bq3Vc7By/A84ZZ75lnF51nMrfAIB3ndOKJnAt49QO9AWcvihzmOtEbGsS11IAjzlu\n" +
"dxYZr3PGDzaRaymAQwG37UWG+wLDU8DFTeRZCuAt19AzsmsTAqMZkq4O/D40s8Mu0O2SRsxsR1ou\n" +
"fa6Y2c7Qzsx2BvFC//1mNujyTZF0VVr8RtInku4KTOZI+smrvcepvdtdX5XWHwyJUIyHU7uOrMIL\n" +
"BZ4P7JcH9cuD+lvSusku/nMVLUeyUgtxubuekfmySiFdEd+YkInA7sBvtuOy1tkfieUIDcJ1Rn+F\n" +
"gSqHkhOyKDimA2dWIyS9flsQ52BwvquE56FYsIHAoKrVmRdSYFcoJLV5gUrcGrHb4GwmSMHNLmlK\n" +
"cP51jIykr5Tc7Dv99UxYenpS0rCkE2Y2nEfe4RlJ8yVli7ROM/sgYnfMladLOjAhYihJE3Pqswdk\n" +
"bK0fWzOskdSRE2sUzOx0OuYzIRWNmeLcWPmMHOO2apKXYLuZVSUiB0dz6r2QHmn00DogKZup6hHS\n" +
"kSbvTctH6ogRoi+nPhQyZGZD0mgh3SoWUkbsIzMrfpmT5G74vUqG0OFI7+X1yDXBeU92Eg6t7uB8\n" +
"EjDXBTiZ/nZGgndWIyKCuZLuk7TZ1b9iZhVCgGslXRhU/X0f+R4JsUJJi2U4KWmBmfm5PVYXw5qc\n" +
"+j4z+yEoX2lmP+bYLnXlPVErYDiYn3uiRi0EsNU9Q+blGW50hr4FWgbgItfQ/cDZ2XU//X7uyjeP\n" +
"P8Wq8YikSUH5TTM7FbUEpgFHA9X7m0KxBCRfIf8IeI0As8qcOhiN65rEt4iTX1C9Xo2T75WWfQpK\n" +
"+SxzIo4SrAzLnB8KHMf23XUMAOYBg05Ibd8RgDdaKSSdpfY5Ee/VE2gKsLeFQj52InoB/8JYdbAF\n" +
"wJYGcyzLuRT4jEoU7oSV7iECyyRNljSkZHv5mJLXiuMNYf5PnqmSnpa0KnJ5oZn5Z1xdSWYD+10L\n" +
"NWRrGTgvnVx6Ir3QQ6O/rQFtVH5pybAbWAvcWEO8+SS7YX05Md8HJpVHSlDz9jTJ+9cTkm7IMTkl\n" +
"aZekX93Rlh6XSLpU0uIc/34l29Pra+VWF4DHgV9yWrMejJBsH7Q3RYATcxbJRsxY/gHxPfBsSwTE\n" +
"AMwhGfN7GP2K4zFA8r+Vt4Eljcrf0H8HeQDTJF2Q5umX9JuZ/TmeOf/z+AuQV+ZFLOIPXAAAAABJ\n" +
"RU5ErkJggg==").bitmap,
iconColor = 0xff4679e9.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "讯飞输入法小米版",
packageName = "com.iflytek.inputmethod.miui",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAATQSURBVGiB7ZpviBVVGMafN4TIAomUtD9bq1ZmJQaFftEsxJCgApEiCimDKDCKiP5Q\n" +
"uEKJEVJQ0QdpCSFKw4JIxaJWSqjQLUuLcLfM1N1c1nUlZD9Y/PowM3X2vWdm7r17996CHhjunDPv\n" +
"n+c558yZOXOu9D/+XbBGBgNmSloqaY6kmZIuk3S+pBPB8bOk7uwws98byaFuAEuAF4FvqR0DwGvA\n" +
"olYKWAR01UE+D13Aynr51DW0gA5JqwtMRiT1SDoi6bikQUmnJV0haVb6m4dtktab2af1cKsKJb2w\n" +
"A7gXKCIZxloObC7ooaKGGpOIlTkJNwALxxC3HVgHnB53McCTkSRbaOBNClwPbIrk2dioBC81rduT\n" +
"fKsj+brGGvSdSNBHG8S5KO9Tkbyb6g12fyRY0+Z7kueTx7pag0wFel2QO8aJcxGPmJibagnwsnMe\n" +
"t3uiCi4POC5bq3Vc7By/A84ZZ75lnF51nMrfAIB3ndOKJnAt49QO9AWcvihzmOtEbGsS11IAjzlu\n" +
"dxYZr3PGDzaRaymAQwG37UWG+wLDU8DFTeRZCuAt19AzsmsTAqMZkq4O/D40s8Mu0O2SRsxsR1ou\n" +
"fa6Y2c7Qzsx2BvFC//1mNujyTZF0VVr8RtInku4KTOZI+smrvcepvdtdX5XWHwyJUIyHU7uOrMIL\n" +
"BZ4P7JcH9cuD+lvSusku/nMVLUeyUgtxubuekfmySiFdEd+YkInA7sBvtuOy1tkfieUIDcJ1Rn+F\n" +
"gSqHkhOyKDimA2dWIyS9flsQ52BwvquE56FYsIHAoKrVmRdSYFcoJLV5gUrcGrHb4GwmSMHNLmlK\n" +
"cP51jIykr5Tc7Dv99UxYenpS0rCkE2Y2nEfe4RlJ8yVli7ROM/sgYnfMladLOjAhYihJE3Pqswdk\n" +
"bK0fWzOskdSRE2sUzOx0OuYzIRWNmeLcWPmMHOO2apKXYLuZVSUiB0dz6r2QHmn00DogKZup6hHS\n" +
"kSbvTctH6ogRoi+nPhQyZGZD0mgh3SoWUkbsIzMrfpmT5G74vUqG0OFI7+X1yDXBeU92Eg6t7uB8\n" +
"EjDXBTiZ/nZGgndWIyKCuZLuk7TZ1b9iZhVCgGslXRhU/X0f+R4JsUJJi2U4KWmBmfm5PVYXw5qc\n" +
"+j4z+yEoX2lmP+bYLnXlPVErYDiYn3uiRi0EsNU9Q+blGW50hr4FWgbgItfQ/cDZ2XU//X7uyjeP\n" +
"P8Wq8YikSUH5TTM7FbUEpgFHA9X7m0KxBCRfIf8IeI0As8qcOhiN65rEt4iTX1C9Xo2T75WWfQpK\n" +
"+SxzIo4SrAzLnB8KHMf23XUMAOYBg05Ibd8RgDdaKSSdpfY5Ee/VE2gKsLeFQj52InoB/8JYdbAF\n" +
"wJYGcyzLuRT4jEoU7oSV7iECyyRNljSkZHv5mJLXiuMNYf5PnqmSnpa0KnJ5oZn5Z1xdSWYD+10L\n" +
"NWRrGTgvnVx6Ir3QQ6O/rQFtVH5pybAbWAvcWEO8+SS7YX05Md8HJpVHSlDz9jTJ+9cTkm7IMTkl\n" +
"aZekX93Rlh6XSLpU0uIc/34l29Pra+VWF4DHgV9yWrMejJBsH7Q3RYATcxbJRsxY/gHxPfBsSwTE\n" +
"AMwhGfN7GP2K4zFA8r+Vt4Eljcrf0H8HeQDTJF2Q5umX9JuZ/TmeOf/z+AuQV+ZFLOIPXAAAAABJ\n" +
"RU5ErkJggg==").bitmap,
iconColor = 0xff4679e9.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "QQ阅读",
packageName = "com.qq.reader",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAMRSURBVGiB7ZhNSFVBGIbfCVIuBG4UMgiSgihq5dZqY5ERSOSunRtXgYs2tW3TImjh\n" +
"tkWbqHDRIrAfI7CltErIwMJIJfuRDOEKGjwtZvTe5J6fb+7Rg+ADlwv3fjPzvjNz5nzfSHvs0RSu\n" +
"yM6AbklXJJ2RdExSh6S/kpYkTUl6I+mJc26uyHGbBugFJsnPI6CrbN0CKsB9g/B6qsBQmeLbjbOe\n" +
"xEgZ4isFiS/HBDBSoPgNru2U+O5tEA+wDHRa9eyL8HA7ok0e2iTdsjYyvQeAw5K+WgcxsCqp0zn3\n" +
"J28D6wr0G+OtVCRdtTSwGjhnjI/hrCXYauC4MT6Gk5Zgq4GDxvgYTCeR1UCLMT6GVktwzDG63eQ+\n" +
"gSS7gZ/G+Bi+W4KtBiYkrRvbWPgo6XEhPVHL8R8Ag4T8HZ/I9QJ3gZkm04c1YAwY2kgj8FluP3AH\n" +
"GA9jDMYYmGsw4Bw+/+8HKiGuG5/c/TAIfw8MA+2hj54geDohfiXGQJagKvAUGMCvSgvQh5/RRqzh\n" +
"K7Hu0P/RILrRRG1lOcbAeI6ONwfAr0xPnbgRYCUYHaG2BQeACUPfAGMxBvqNg2wwDdwEOoG28GkH\n" +
"bgCzkX32JelsmI1SKy46JN0zu68xL38rcaSJPq5LWpTU6px7mKsFfm/PACfCzJXFcNAwA4zmtkyt\n" +
"3q3i9/NCCeJngS78cwQw2Uhr0ovsV/iuSOqV9CG3++J4J+mCpANbNP1HkoH6p35/gaKs1I+d/yTC\n" +
"n+mjYeuUvYUWgpa4TBh/JJbFcJa+xKIenyp8knQoynlxzEs6lVTop95KAFX5B7lM1p1zidsnK51e\n" +
"KFhMDKn1QZaB3wUKieVb2p+7YQVSS8wsA0sFCokldRKzDCwWKCSWhm/gDXaDgVQNWQY+Fygkli9p\n" +
"f2beTuOrrMuSLkk6XZCoLKYkvZL0wjn3Oi0w5nr9vKQ+SRdVyxSbZVXSS0nPJD13zqUenYWAL+QH\n" +
"8IX6SnI6k8gK/spm84ajNOrMjOKLoCSqIWagdNFJ4Iv4QeBtnfCJ8Ftb2fpMBDO7S/RO8w+xh352\n" +
"EqfboQAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xff45afff.toInt(),
contributorName = "fankes"
),
IconDataBean(
isEnabled = true,
isEnabledAll = false,
appName = "QQ浏览器",
packageName = "com.tencent.mtt",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADUAAAAyCAYAAAD845PIAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAPhSURBVGiB5ZpLiB1FFIb/I4nR8REw0UkGE9zERyIDxriIbgYXQTKuXKhBERcujAYf\n" +
"oAshiwEloLgQNA+UoKCiC40YRBEXCYoIEiE4YzJxQPJkzEtEGXQw8LmovtjpdPf0qep7r+gPDUPX\n" +
"qXPOV9W3q+r0SP9BWTecAssl5a/fJB3PrmNmdrobcVsVsBzYCHxCM50CtgKjwEC/8z9PwDpgd0OQ\n" +
"OsDtwM39hlkLvJMIU9QM8CLh0e050JaWYYqaBh7tFcwA8H6XgfLa3m2gNT2EyeuzbgEN9wmoo21t\n" +
"Ay0FzvYZCtr6jQHzga/6TZPTA21APd9vioKmafi6v6gCaIWkx5NHRpqV9J2koy34WqKUnIBXEkZ0\n" +
"J/AwcGvB5yBhB/IMcDzS9wwxOw9gNXAuMug9DWMMArsiY/jXL+C5iEDfAAsiYq2LiHUWuMwbaI8z\n" +
"yF9emEK8FRFg99b5PO9FASyTNOLMa5MXJC8zm5L0tLPbaGNL4DHniO1wJlMX+wtH3DN1voqv9Ouc\n" +
"ubS56fzYYbsIuLqqsQh1pcPxjKQfHPZzadJpv6yqIQXqgJmdcyZSp/1O+2urGopQCx1O25wlmdkZ\n" +
"+XYejaHmOZxOO2y74bNyAopQPzucLnXYNtUqh+2JqoYUqCGH7ZwCrpJ0uaNLJVTxcfNM/wiwwMxm\n" +
"HX0ELFFYOi6RJDPbmzXdqFDsrPytFFQJVQx4v3Pxva+Bz4XAZmAf8EuJj6PAy8BdwLzMdrZB7Cua\n" +
"Qo04ob4GKh8ZYBMw6fC3M+t3C3Cyxm6iEVAukXEnWOmuAnjX6aej01n/0RqbMS/UxohExgo+tkbh\n" +
"/KMvMz9PVLSv9EINEndIHMv6vxBLUtBLmb/rgQ3ANuBXGjx6F9QozOykpLdcIxE0AAyqndqGJD0L\n" +
"HJH0mqTbJX0kaY2kD6K8AesjRvY24JGWZqlKrxLOfHHKHDTVt1mf1M86TbQPuDQF7OAcASaAp4DF\n" +
"hM8wvdIbKVAraxxPZO3rqV9TuqUNVXmXFjM7MrMDkp4saZqV9JDCNut1SddEj1y87kzqzYU7jS3Z\n" +
"/bf7MEMd/ZQ8LIRPOp3y2U3E1ezaVunxp/bxy8vMvpf0oKRdZnZQ0nDySKXrhrKbjaEkycxOKIBJ\n" +
"0h2pGbWgQ2U3XVCSZGZ/ZH+eSkonXXvNrPT854bKaTyhbxvaXdWQAlU69T3Spwp7wvYF7Pg3vfXa\n" +
"BPuwhzAzwNquAuXA7gamSpL4E3gT+HyOZPcQzkx1h8v3mubT2r/GEWoVw9k1X9IxSfvN7HDWfrHC\n" +
"Z6IhhZrh7wrVq3Ez+zHnZ7XC+jOkUK+flDSVLSf/X/0N9IzKpFVJbfwAAAAASUVORK5CYII=").bitmap,
iconColor = 0xff6593f1.toInt(),
contributorName = "fankes"
),
// TODO 可继续在这里添加更多 APP
)
}
}
}

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -33,7 +33,6 @@ import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.ListView
import android.widget.TextView
import android.widget.Toast
import androidx.constraintlayout.utils.widget.ImageFilterView
import androidx.core.view.isVisible
import com.fankes.miui.notify.R
@@ -45,6 +44,8 @@ import com.fankes.miui.notify.params.IconPackParams
import com.fankes.miui.notify.ui.base.BaseActivity
import com.fankes.miui.notify.utils.SystemUITool
import com.fankes.miui.notify.utils.showDialog
import com.fankes.miui.notify.utils.snake
import com.fankes.miui.notify.utils.toast
import com.fankes.miui.notify.view.MaterialSwitch
import com.google.android.material.textfield.TextInputEditText
@@ -56,6 +57,9 @@ class ConfigureActivity : BaseActivity() {
/** 回调适配器改变 */
private var onChanged: (() -> Unit)? = null
/** 回调滚动事件改变 */
private var onScrollEvent: ((Boolean) -> Unit)? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_config)
@@ -63,6 +67,15 @@ class ConfigureActivity : BaseActivity() {
findViewById<View>(R.id.title_back_icon).setOnClickListener { onBackPressed() }
/** 刷新适配器结果相关 */
refreshAdapterResult()
/** 设置上下按钮点击事件 */
findViewById<View>(R.id.config_title_up).setOnClickListener {
snake(msg = "滚动到顶部")
onScrollEvent?.invoke(false)
}
findViewById<View>(R.id.config_title_down).setOnClickListener {
snake(msg = "滚动到底部")
onScrollEvent?.invoke(true)
}
/** 设置过滤按钮点击事件 */
findViewById<View>(R.id.config_title_filter).setOnClickListener {
showDialog {
@@ -84,7 +97,7 @@ class ConfigureActivity : BaseActivity() {
onChanged?.invoke()
refreshAdapterResult()
} else {
Toast.makeText(applicationContext, "条件不能为空", Toast.LENGTH_SHORT).show()
toast(msg = "条件不能为空")
it.performClick()
}
}
@@ -162,6 +175,7 @@ class ConfigureActivity : BaseActivity() {
lateinit var switchAll: MaterialSwitch
}
}.apply { onChanged = { notifyDataSetChanged() } }
onScrollEvent = { post { setSelection(if (it) iconDatas.lastIndex else 0) } }
}
/** 设置点击事件 */
findViewById<View>(R.id.config_cbr_button).setOnClickListener {
@@ -173,7 +187,7 @@ class ConfigureActivity : BaseActivity() {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
})
}.onFailure {
Toast.makeText(this, "无法启动系统默认浏览器", Toast.LENGTH_SHORT).show()
toast(msg = "无法启动系统默认浏览器")
}
}
}

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -32,17 +32,17 @@ import android.os.Bundle
import android.view.View
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.widget.SwitchCompat
import androidx.constraintlayout.utils.widget.ImageFilterView
import androidx.core.view.isVisible
import com.fankes.miui.notify.BuildConfig
import com.fankes.miui.notify.R
import com.fankes.miui.notify.hook.HookConst.ENABLE_COLOR_ICON_COMPAT
import com.fankes.miui.notify.hook.HookConst.ENABLE_COLOR_ICON_HOOK
import com.fankes.miui.notify.hook.HookConst.ENABLE_HIDE_ICON
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE_LOG
import com.fankes.miui.notify.hook.HookConst.ENABLE_NOTIFY_ICON_HOOK
import com.fankes.miui.notify.hook.HookConst.ENABLE_NOTIFY_ICON_FIX
import com.fankes.miui.notify.ui.base.BaseActivity
import com.fankes.miui.notify.utils.*
import com.highcapable.yukihookapi.hook.factory.modulePrefs
@@ -93,9 +93,9 @@ class MainActivity : BaseActivity() {
noCancelable()
}
/** 判断是否 Hook */
isHooked() -> {
findViewById<LinearLayout>(R.id.main_lin_status).setBackgroundResource(R.drawable.green_round)
findViewById<ImageFilterView>(R.id.main_img_status).setImageResource(R.mipmap.succcess)
YukiHookModuleStatus.isActive() -> {
findViewById<LinearLayout>(R.id.main_lin_status).setBackgroundResource(R.drawable.bg_green_round)
findViewById<ImageFilterView>(R.id.main_img_status).setImageResource(R.mipmap.ic_success)
findViewById<TextView>(R.id.main_text_status).text = "模块已激活"
}
else ->
@@ -112,24 +112,34 @@ class MainActivity : BaseActivity() {
/** 初始化 View */
val moduleEnableSwitch = findViewById<SwitchCompat>(R.id.module_enable_switch)
val moduleEnableLogSwitch = findViewById<SwitchCompat>(R.id.module_enable_log_switch)
val colorIconHookItem = findViewById<View>(R.id.config_item_color_hook)
val notifyIconConfigItem = findViewById<View>(R.id.config_item_notify)
val hideIconInLauncherSwitch = findViewById<SwitchCompat>(R.id.hide_icon_in_launcher_switch)
val colorIconHookSwitch = findViewById<SwitchCompat>(R.id.color_icon_fix_switch)
val notifyIconHookSwitch = findViewById<SwitchCompat>(R.id.notify_icon_fix_switch)
/** 设置旧版本警告 */
findViewById<View>(R.id.config_notify_app_icon_warn).isVisible = miuiVersion == "12"
val colorIconCompatSwitch = findViewById<SwitchCompat>(R.id.color_icon_compat_switch)
val colorIconCompatText = findViewById<View>(R.id.color_icon_compat_text)
val notifyIconFixSwitch = findViewById<SwitchCompat>(R.id.notify_icon_fix_switch)
val notifyIconFixButton = findViewById<View>(R.id.config_notify_app_button)
/** 获取 Sp 存储的信息 */
notifyIconConfigItem.isVisible = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
colorIconHookItem.isVisible = modulePrefs.getBoolean(ENABLE_MODULE, default = true)
colorIconCompatSwitch.isVisible = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
colorIconCompatText.isVisible = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
notifyIconConfigItem.isVisible = modulePrefs.getBoolean(ENABLE_MODULE, default = true) &&
modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
moduleEnableLogSwitch.isVisible = modulePrefs.getBoolean(ENABLE_MODULE, default = true)
notifyIconFixButton.isVisible = modulePrefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true)
moduleEnableSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE, default = true)
moduleEnableLogSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE_LOG, default = false)
hideIconInLauncherSwitch.isChecked = modulePrefs.getBoolean(ENABLE_HIDE_ICON)
colorIconHookSwitch.isChecked = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)
notifyIconHookSwitch.isChecked = modulePrefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true)
colorIconCompatSwitch.isChecked = modulePrefs.getBoolean(ENABLE_COLOR_ICON_COMPAT)
notifyIconFixSwitch.isChecked = modulePrefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true)
moduleEnableSwitch.setOnCheckedChangeListener { btn, b ->
if (!btn.isPressed) return@setOnCheckedChangeListener
modulePrefs.putBoolean(ENABLE_MODULE, b)
moduleEnableLogSwitch.isVisible = b
colorIconHookItem.isVisible = b
notifyIconConfigItem.isVisible = b && colorIconHookSwitch.isChecked
SystemUITool.showNeedRestartSnake(context = this)
}
moduleEnableLogSwitch.setOnCheckedChangeListener { btn, b ->
@@ -150,19 +160,25 @@ class MainActivity : BaseActivity() {
if (!btn.isPressed) return@setOnCheckedChangeListener
modulePrefs.putBoolean(ENABLE_COLOR_ICON_HOOK, b)
notifyIconConfigItem.isVisible = b
colorIconCompatSwitch.isVisible = b
colorIconCompatText.isVisible = b
SystemUITool.showNeedRestartSnake(context = this)
}
notifyIconHookSwitch.setOnCheckedChangeListener { btn, b ->
colorIconCompatSwitch.setOnCheckedChangeListener { btn, b ->
if (!btn.isPressed) return@setOnCheckedChangeListener
modulePrefs.putBoolean(ENABLE_NOTIFY_ICON_HOOK, b)
modulePrefs.putBoolean(ENABLE_COLOR_ICON_COMPAT, b)
SystemUITool.showNeedRestartSnake(context = this)
}
notifyIconFixSwitch.setOnCheckedChangeListener { btn, b ->
if (!btn.isPressed) return@setOnCheckedChangeListener
modulePrefs.putBoolean(ENABLE_NOTIFY_ICON_FIX, b)
notifyIconFixButton.isVisible = b
SystemUITool.showNeedRestartSnake(context = this)
}
/** 通知图标优化名单按钮点击事件 */
notifyIconFixButton.setOnClickListener { startActivity(Intent(this, ConfigureActivity::class.java)) }
/** 重启按钮点击事件 */
findViewById<View>(R.id.title_restart_icon).setOnClickListener { SystemUITool.restartSystemUI(context = this) }
/** 通知图标优化名单按钮点击事件 */
findViewById<View>(R.id.config_notify_app_button).setOnClickListener {
startActivity(Intent(this, ConfigureActivity::class.java))
}
/** 恰饭! */
findViewById<View>(R.id.link_with_follow_me).setOnClickListener {
runCatching {
@@ -174,7 +190,7 @@ class MainActivity : BaseActivity() {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
})
}.onFailure {
Toast.makeText(this, "你可能没有安装酷安", Toast.LENGTH_SHORT).show()
toast(msg = "你可能没有安装酷安")
}
}
/** 项目地址点击事件 */
@@ -187,7 +203,7 @@ class MainActivity : BaseActivity() {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
})
}.onFailure {
Toast.makeText(this, "无法启动系统默认浏览器", Toast.LENGTH_SHORT).show()
toast(msg = "无法启动系统默认浏览器")
}
}
}
@@ -195,7 +211,7 @@ class MainActivity : BaseActivity() {
override fun onResume() {
super.onResume()
/** MIUI 12 的版本特殊 - 所以给出提示 */
if (!isWarnDialogShowing && isHooked() && miuiVersion == "12" && isMiuiNotifyStyle)
if (!isWarnDialogShowing && YukiHookModuleStatus.isActive() && miuiVersion == "12" && isMiuiNotifyStyle)
showDialog {
isWarnDialogShowing = true
title = "经典通知栏样式已启用"
@@ -205,10 +221,4 @@ class MainActivity : BaseActivity() {
noCancelable()
}
}
/**
* 判断模块是否激活
* @return [Boolean] 激活状态
*/
private fun isHooked() = YukiHookModuleStatus.isActive()
}

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -0,0 +1,118 @@
/*
* MIUINativeNotifyIcon - Fix the native notification bar icon function abandoned by the MIUI development team.
* Copyright (C) 2019-2022 Fankes Studio(qzmmcn@163.com)
* https://github.com/fankes/MIUINativeNotifyIcon
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* and eula along with this software. If not, see
* <https://www.gnu.org/licenses/>
*
* This file is Created by fankes on 2022/2/19.
*/
package com.fankes.miui.notify.utils
import android.graphics.*
import android.graphics.drawable.AnimationDrawable
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import android.graphics.drawable.VectorDrawable
import android.util.ArrayMap
import androidx.core.graphics.drawable.toBitmap
import kotlin.math.abs
/**
* 这是一个从 AOSP 源码中分离出来的功能
*
* 主要作用于兼容部分 MIUI 魔改颜色判断代码造成判断位图灰度功能失效
*/
object BitmapCompatTool {
/** 缓存已判断的结果防止卡顿 */
private var cachedBitmapGrayscales = ArrayMap<Int, Boolean>()
private var tempBuffer = intArrayOf(0)
private var tempCompactBitmap: Bitmap? = null
private var tempCompactBitmapCanvas: Canvas? = null
private var tempCompactBitmapPaint: Paint? = null
private val tempMatrix = Matrix()
/**
* 判断 [Drawable] 是否为灰度位图
* @param drawable 要判断的 [Drawable]
* @return [Boolean] 是否灰度
*/
fun isGrayscaleDrawable(drawable: Drawable) = safeOfFalse {
when (drawable) {
is BitmapDrawable -> isGrayscaleBitmap(drawable.bitmap)
is AnimationDrawable -> !(drawable.numberOfFrames <= 0 || !isGrayscaleBitmap(drawable.getFrame(0).toBitmap()))
is VectorDrawable -> true
else -> isGrayscaleBitmap(drawable.toBitmap())
}
}
/**
* 判断 [Bitmap] 是否为灰度位图
* @param bitmap 要判断的位图
* @return [Boolean] 是否灰度
*/
private fun isGrayscaleBitmap(bitmap: Bitmap) =
cachedBitmapGrayscales[bitmap.generationId] ?: let {
var height = bitmap.height
var width = bitmap.width
if (height > 64 || width > 64) {
if (tempCompactBitmap == null) {
tempCompactBitmap = Bitmap.createBitmap(64, 64, Bitmap.Config.ARGB_8888)
.also { tempCompactBitmapCanvas = Canvas(it) }
tempCompactBitmapPaint = Paint(Paint.FILTER_BITMAP_FLAG).apply { isFilterBitmap = true }
}
tempMatrix.reset()
tempMatrix.setScale(64f / width, 64f / height, 0f, 0f)
tempCompactBitmapCanvas?.drawColor(0, PorterDuff.Mode.SRC)
tempCompactBitmapCanvas?.drawBitmap(bitmap, tempMatrix, tempCompactBitmapPaint)
height = 64
width = 64
}
val size = height * width
ensureBufferSize(size)
tempCompactBitmap?.getPixels(tempBuffer, 0, width, 0, 0, width, height)
for (i in 0 until size)
if (!isGrayscaleColor(tempBuffer[i])) {
cachedBitmapGrayscales[bitmap.generationId] = false
return@let false
}
cachedBitmapGrayscales[bitmap.generationId] = true
true
}
/**
* 提纯 [Bitmap] 颜色判断灰度
* @param color 颜色
* @return [Boolean] 是否灰度
*/
private fun isGrayscaleColor(color: Int): Boolean {
if (color shr 24 and 255 < 50) return true
val r = color shr 16 and 255
val g = color shr 8 and 255
val b = color and 255
return !(abs(r - g) >= 20 || abs(r - b) >= 20 || abs(g - b) >= 20)
}
/**
* 计算字节数组
* @param size 大小
*/
private fun ensureBufferSize(size: Int) {
if (tempBuffer.size < size) tempBuffer = IntArray(size)
}
}

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -22,11 +22,9 @@
*/
package com.fankes.miui.notify.utils
import android.app.Activity
import android.content.Context
import android.graphics.Color
import android.widget.Toast
import com.google.android.material.snackbar.Snackbar
import com.highcapable.yukihookapi.hook.xposed.YukiHookModuleStatus
/**
* 系统界面工具
@@ -46,7 +44,7 @@ object SystemUITool {
execShellSu(cmd = "pgrep systemui").also { pid ->
if (pid.isNotBlank())
execShellSu(cmd = "kill -9 $pid")
else Toast.makeText(context, "ROOT 权限获取失败", Toast.LENGTH_SHORT).show()
else toast(msg = "ROOT 权限获取失败")
}
}
cancelButton()
@@ -57,9 +55,7 @@ object SystemUITool {
* @param context 实例
*/
fun showNeedRestartSnake(context: Context) =
Snackbar.make((context as Activity).findViewById(android.R.id.content), "设置需要重启系统界面才能生效", Snackbar.LENGTH_LONG)
.apply {
setActionTextColor(Color.WHITE)
setAction("立即重启") { restartSystemUI(context) }
}.show()
if (YukiHookModuleStatus.isActive())
context.snake(msg = "设置需要重启系统界面才能生效", actionText = "立即重启") { restartSystemUI(context) }
else context.snake(msg = "模块没有激活,更改不会生效")
}

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,10 +20,11 @@
*
* This file is Created by fankes on 2022/1/7.
*/
@file:Suppress("DEPRECATION", "PrivateApi", "unused")
@file:Suppress("DEPRECATION", "PrivateApi", "unused", "ObsoleteSdkInt")
package com.fankes.miui.notify.utils
import android.app.Activity
import android.content.Context
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
@@ -32,10 +33,10 @@ import android.graphics.*
import android.graphics.Bitmap.createBitmap
import android.os.Build
import android.provider.Settings
import android.service.notification.StatusBarNotification
import android.util.Base64
import android.widget.Toast
import com.fankes.miui.notify.application.MNNApplication.Companion.appContext
import com.highcapable.yukihookapi.hook.factory.callStatic
import com.google.android.material.snackbar.Snackbar
import com.highcapable.yukihookapi.hook.factory.classOf
import com.highcapable.yukihookapi.hook.factory.hasClass
import com.highcapable.yukihookapi.hook.factory.method
@@ -145,12 +146,6 @@ val miuiFullVersion
get() = if (isMIUI) (miuiVersion + " " + findPropString(key = "ro.system.build.version.incremental"))
else "不是 MIUI 系统"
/**
* 获取推送通知的包名
* @return [String]
*/
val StatusBarNotification.opPkgName get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) opPkg else packageName ?: ""
/**
* 得到安装包信息
* @return [PackageInfo]
@@ -245,9 +240,10 @@ fun Bitmap.round(radius: Float): Bitmap =
* @return [String]
*/
fun findPropString(key: String, default: String = "") = safeOf(default) {
(classOf(name = "android.os.SystemProperties").method(
name = "get", StringType, StringType
)?.callStatic(key, default)) ?: default
(classOf(name = "android.os.SystemProperties").method {
name = "get"
param(StringType, StringType)
}.get().invoke(key, default)) ?: default
}
/**
@@ -261,6 +257,26 @@ fun execShellSu(cmd: String) = safeOfNothing {
}
}
/**
* 弹出 [Toast]
* @param msg 提示内容
*/
fun toast(msg: String) = Toast.makeText(appContext, msg, Toast.LENGTH_SHORT).show()
/**
* 弹出 [Snackbar]
* @param msg 提示内容
* @param actionText 按钮文本 - 不写默认取消按钮
* @param it 按钮事件回调
*/
fun Context.snake(msg: String, actionText: String = "", it: () -> Unit = {}) =
Snackbar.make((this as Activity).findViewById(android.R.id.content), msg, Snackbar.LENGTH_LONG)
.apply {
if (actionText.isBlank()) return@apply
setActionTextColor(Color.WHITE)
setAction(actionText) { it() }
}.show()
/**
* 忽略异常返回值
* @param it 回调 - 如果异常为空

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by ferredoxin.
* version 3 of the License, or any later version.
* <p>
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of

View File

@@ -25,7 +25,7 @@
android:layout_height="20dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="25dp"
android:src="@mipmap/back"
android:src="@mipmap/ic_back"
android:tint="@color/colorTextGray"
android:tooltipText="返回" />
@@ -57,12 +57,30 @@
android:textSize="12sp" />
</LinearLayout>
<androidx.constraintlayout.utils.widget.ImageFilterView
android:id="@+id/config_title_up"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginEnd="10dp"
android:src="@mipmap/ic_page_top"
android:tint="@color/colorTextGray"
android:tooltipText="滚动到顶部" />
<androidx.constraintlayout.utils.widget.ImageFilterView
android:id="@+id/config_title_down"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginEnd="17dp"
android:src="@mipmap/ic_page_bottom"
android:tint="@color/colorTextGray"
android:tooltipText="滚动到底部" />
<androidx.constraintlayout.utils.widget.ImageFilterView
android:id="@+id/config_title_filter"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginEnd="10dp"
android:src="@mipmap/icon_filter"
android:src="@mipmap/ic_filter"
android:tint="@color/colorTextGray"
android:tooltipText="按条件过滤" />
</LinearLayout>
@@ -73,7 +91,7 @@
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="horizontal"
@@ -84,7 +102,7 @@
android:layout_height="15dp"
android:layout_marginEnd="10dp"
android:alpha="0.85"
android:src="@mipmap/about"
android:src="@mipmap/ic_about"
android:tint="@color/colorTextDark" />
<TextView
@@ -133,7 +151,7 @@
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
android:background="@drawable/button_round"
android:background="@drawable/bg_button_round"
android:gravity="center"
android:padding="10dp"
android:singleLine="true"

View File

@@ -36,7 +36,7 @@
android:layout_height="28dp"
android:layout_marginEnd="5dp"
android:alpha="0.85"
android:src="@mipmap/restart"
android:src="@mipmap/ic_restart"
android:tint="@color/colorTextGray"
android:tooltipText="重启系统界面" />
</LinearLayout>
@@ -49,7 +49,7 @@
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="5dp"
android:background="@drawable/dark_round"
android:background="@drawable/bg_dark_round"
android:elevation="0dp"
android:gravity="center">
@@ -59,7 +59,7 @@
android:layout_height="25dp"
android:layout_marginStart="25dp"
android:layout_marginEnd="5dp"
android:src="@mipmap/warn"
android:src="@mipmap/ic_warn"
android:tint="@color/white" />
<LinearLayout
@@ -121,7 +121,7 @@
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="horizontal"
@@ -132,7 +132,7 @@
android:layout_height="15dp"
android:layout_marginEnd="10dp"
android:alpha="0.85"
android:src="@mipmap/about"
android:src="@mipmap/ic_about"
android:tint="@color/colorTextDark" />
<TextView
@@ -153,7 +153,7 @@
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:animateLayoutChanges="true"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="vertical"
@@ -184,18 +184,19 @@
android:layout_marginBottom="10dp"
android:alpha="0.6"
android:lineSpacingExtra="6dp"
android:text="模块关闭后功能都将彻底停止工作,以下选项都将不再生效。"
android:text="模块关闭后一切功能都将彻底停止工作。"
android:textColor="@color/colorTextDark"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/config_item_color_hook"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="vertical"
@@ -219,6 +220,26 @@
android:text="此选项默认开启,开启后将自动对 APP 通知图标进行判断,保持高版本 API 的 APP 不规范的彩色图标不被着色为白、黑色块并对图标进行圆角优化,关闭后将按照 Android API 规范对 APP 通知进行图标着色,可能会出现着色为黑白、色块情况。"
android:textColor="@color/colorTextDark"
android:textSize="12sp" />
<com.fankes.miui.notify.view.MaterialSwitch
android:id="@+id/color_icon_compat_switch"
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_marginBottom="5dp"
android:text="启用兼容模式"
android:textColor="@color/colorTextGray"
android:textSize="15sp" />
<TextView
android:id="@+id/color_icon_compat_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:alpha="0.6"
android:lineSpacingExtra="6dp"
android:text="如果发现通知图标颜色判定不正常可启用兼容模式,一般情况下不建议启用兼容模式,发生问题请关闭兼容模式。"
android:textColor="@color/colorTextDark"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
@@ -228,7 +249,8 @@
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp"
android:layout_marginRight="10dp"
android:background="@drawable/permotion_round"
android:animateLayoutChanges="true"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="vertical"
@@ -250,7 +272,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@drawable/button_round"
android:background="@drawable/bg_button_round"
android:gravity="center"
android:padding="10dp"
android:singleLine="true"
@@ -266,23 +288,9 @@
android:layout_marginBottom="10dp"
android:alpha="0.6"
android:lineSpacingExtra="6dp"
android:text="此选项默认开启,开启后将对优化名单内 APP 通知小图标进行色彩修复,特别是通过 MIPUSH 推送的通知,它们始终是彩色的,修复后使得它们的图标看起来更加符合原生规范。"
android:text="此选项默认开启,开启后将对优化名单内 APP 通知小图标使用单色调进行修复,特别是通过 MIPUSH 推送的通知,它们始终是 APP 默认图标(彩色的 APP 图标),修复后使得它们的图标看起来更加符合 Android 原生的统一规范。"
android:textColor="@color/colorTextDark"
android:textSize="12sp" />
<TextView
android:id="@+id/config_notify_app_icon_warn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="10dp"
android:alpha="0.6"
android:lineSpacingExtra="6dp"
android:text="⚠️ 你的 MIUI 版本过低,状态栏上 MIPUSH 的彩色图标由于不能识别反色将不会被优化为黑白小图标,仅在通知栏生效。"
android:textColor="#FF9800"
android:textSize="12sp"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
@@ -291,7 +299,7 @@
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="vertical"
@@ -323,7 +331,7 @@
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="vertical"
@@ -340,7 +348,7 @@
android:layout_height="15dp"
android:layout_marginEnd="5dp"
android:alpha="0.85"
android:src="@mipmap/about"
android:src="@mipmap/ic_about"
android:tint="@color/colorTextGray" />
<TextView
@@ -379,7 +387,7 @@
android:layout_marginBottom="10dp"
android:alpha="0.8"
android:lineSpacingExtra="6dp"
android:text="Q.哪些是已知问题?\nA.以下是问题描述列表:\n(1) 动态小图标可能会在高版本系统中闪烁,这是 MIUI 自身就存在的问题,后期只能等官方修复。\n(2) 请始终保持最新版本的 LSPosed旧版本可能会出现 Hook 不生效的问题。"
android:text="Q.哪些是已知问题?\nA.以下是问题描述列表:\n(1) 动态小图标可能会在高版本系统中闪烁,这是 MIUI 自身就存在的问题,后期只能等官方修复。\n(2) 请始终保持最新版本的 LSPosed旧版本可能会出现 Hook 不生效的问题。\n(3) 建议最低从 MIUI 12.5 “2021-5-18” 开发版以后开始使用,之前的版本可能或多或少存在 MIUI 自身 BUG 不生效、黑白块问题,若你的系统不存在原生图标问题不建议使用模块。"
android:textColor="@color/colorTextDark"
android:textSize="12sp" />
@@ -400,7 +408,7 @@
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="vertical"
@@ -417,7 +425,7 @@
android:layout_height="15dp"
android:layout_marginEnd="5dp"
android:alpha="0.85"
android:src="@mipmap/about"
android:src="@mipmap/ic_about"
android:tint="@color/colorTextGray" />
<TextView
@@ -447,7 +455,7 @@
android:layout_marginTop="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="10dp"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp"
android:gravity="center"
android:orientation="vertical"
@@ -476,7 +484,7 @@
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/qr_pay" />
android:src="@mipmap/bg_qr_pay" />
</androidx.cardview.widget.CardView>
<TextView
@@ -497,7 +505,7 @@
android:layout_marginRight="15dp"
android:layout_marginBottom="10dp"
android:autoLink="web"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:lineSpacingExtra="6dp"
android:padding="10dp"
android:text="此模块使用 YukiHookAPI 构建。\n点击这里了解更多 https://github.com/fankes/YukiHookAPI"

View File

@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/permotion_round"
android:background="@drawable/bg_permotion_round"
android:baselineAligned="false"
android:gravity="center|start"
android:orientation="horizontal"
@@ -28,7 +28,7 @@
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginEnd="8dp"
android:src="@mipmap/about"
android:src="@mipmap/ic_about"
android:tint="@color/colorTextGray" />
<TextView

View File

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 201 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -5,8 +5,8 @@ plugins {
}
ext {
appVersionName = "1.51"
appVersionCode = 10
appVersionName = "1.7"
appVersionCode = 15
}
task clean(type: Delete) {

View File

@@ -10,7 +10,8 @@ dependencyResolutionManagement {
repositories {
google()
maven { url "https://api.xposed.info/" }
maven { url 'https://www.jitpack.io' }
maven { url "https://www.jitpack.io" }
maven { url "https://s01.oss.sonatype.org/content/repositories/releases" }
mavenCentral()
}
}