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/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_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_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/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/layout/dia_icon_search.xml" value="0.4307692307692308" />
<entry key="app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml" value="0.44871794871794873" /> <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/build-passing-brightgreen)
![Eclipse Marketplace](https://img.shields.io/badge/license-AGPL3.0-blue) ![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/> <br/><br/>
<img src="https://github.com/fankes/MIUINativeNotifyIcon/blob/master/app/src/main/ic_launcher-playstore.png" width = "100" height = "100"/> <img src="https://github.com/fankes/MIUINativeNotifyIcon/blob/master/app/src/main/ic_launcher-playstore.png" width = "100" height = "100"/>
<br/> <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/><br/>
⚠️ 适配说明<br/> ⚠️ 适配说明<br/>
- 此模块仅支持 LSPosed(作用域“系统界面”)、~~EdXposed(随时停止支持)~~、不支持太极无极 - 此模块仅支持 LSPosed(作用域“系统界面”)、~~EdXposed(随时停止支持)~~、不支持太极无极
- 目前最低支持基于 Android 9 版本的 MIUI 12 或 MIUI 12.5(最低建议) - 目前最低支持基于 Android 9 版本的 MIUI 12 或 MIUI 12.5(最低建议)
- 建议最低从 MIUI 12.5 `2021-5-18` 开发版以后开始使用模块,之前的版本可能或多或少存在 MIUI 自身 BUG 不生效、黑白块的问题
- 请始终保持最新版本的 LSPosed旧版本可能会出现 Hook 不生效的问题 - 请始终保持最新版本的 LSPosed旧版本可能会出现 Hook 不生效的问题
# 请勿用于非法用途 # 请勿用于非法用途

View File

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

View File

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

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * 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 * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * 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 * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * 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_MODULE_LOG = "_enable_module_log"
const val ENABLE_HIDE_ICON = "_hide_icon" const val ENABLE_HIDE_ICON = "_hide_icon"
const val ENABLE_COLOR_ICON_HOOK = "_color_icon_hook" 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" 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 * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * 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.Outline
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.graphics.drawable.Icon import android.graphics.drawable.Icon
import android.os.Build
import android.service.notification.StatusBarNotification import android.service.notification.StatusBarNotification
import android.view.View import android.view.View
import android.view.ViewOutlineProvider import android.view.ViewOutlineProvider
import android.widget.ImageView import android.widget.ImageView
import androidx.core.graphics.drawable.toBitmap 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_COLOR_ICON_HOOK
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE 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_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.HookConst.SYSTEMUI_PACKAGE_NAME
import com.fankes.miui.notify.hook.factory.isAppNotifyHookAllOf import com.fankes.miui.notify.hook.factory.isAppNotifyHookAllOf
import com.fankes.miui.notify.hook.factory.isAppNotifyHookOf 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.annotation.xposed.InjectYukiHookWithXposed
import com.highcapable.yukihookapi.hook.bean.VariousClass import com.highcapable.yukihookapi.hook.bean.VariousClass
import com.highcapable.yukihookapi.hook.factory.* 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.log.loggerW
import com.highcapable.yukihookapi.hook.param.PackageParam import com.highcapable.yukihookapi.hook.param.PackageParam
import com.highcapable.yukihookapi.hook.type.android.ContextClass import com.highcapable.yukihookapi.hook.type.android.ContextClass
@@ -74,15 +77,12 @@ class HookEntry : YukiHookXposedInitProxy {
private const val NotificationViewWrapperClass = private const val NotificationViewWrapperClass =
"$SYSTEMUI_PACKAGE_NAME.statusbar.notification.NotificationViewWrapper" "$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 ContrastColorUtilClass = "com.android.internal.util.ContrastColorUtil"
/** 未确定是否只有旧版本存在的类 */
private const val ExpandableNotificationRowClass = "$SYSTEMUI_PACKAGE_NAME.statusbar.ExpandableNotificationRow"
/** 根据多个版本存在不同的包名相同的类 */ /** 根据多个版本存在不同的包名相同的类 */
private val NotificationUtilClass = VariousClass( private val NotificationUtilClass = VariousClass(
"$SYSTEMUI_PACKAGE_NAME.statusbar.notification.NotificationUtil", "$SYSTEMUI_PACKAGE_NAME.statusbar.notification.NotificationUtil",
@@ -104,20 +104,18 @@ class HookEntry : YukiHookXposedInitProxy {
* @param drawable 要判断的图标 * @param drawable 要判断的图标
* @return [Boolean] * @return [Boolean]
*/ */
private fun PackageParam.isGrayscaleIcon(context: Context, drawable: Drawable) = safeOfFalse { private fun PackageParam.isGrayscaleIcon(context: Context, drawable: Drawable) =
ContrastColorUtilClass.clazz.let { if (!prefs.getBoolean(ENABLE_COLOR_ICON_COMPAT)) safeOfFalse {
it.method(name = "isGrayscaleIcon", DrawableClass) ContrastColorUtilClass.clazz.let {
?.call<Boolean>(it.method(name = "getInstance", ContextClass)?.callStatic(context), drawable) ?: false it.method {
} name = "isGrayscaleIcon"
} param(DrawableClass)
}.get(it.method {
/** name = "getInstance"
* 获取当前通知栏的样式 param(ContextClass)
* @return [Boolean] }.get().invoke(context)).invoke<Boolean>(drawable) ?: false
*/ }
private fun PackageParam.isShowMiuiStyle() = safeOfFalse { } else BitmapCompatTool.isGrayscaleDrawable(drawable)
NotificationUtilClass.clazz.method(name = "showMiuiStyle")?.callStatic() ?: false
}
/** /**
* 是否为新版本 MIUI 方案 * 是否为新版本 MIUI 方案
@@ -125,9 +123,19 @@ class HookEntry : YukiHookXposedInitProxy {
* 拥有状态栏图标颜色检查功能 * 拥有状态栏图标颜色检查功能
* @return [Boolean] * @return [Boolean]
*/ */
private fun PackageParam.hasIgnoreStatusBarIconColor() = safeOfFalse { private val PackageParam.hasIgnoreStatusBarIconColor
NotificationUtilClass.clazz.hasMethod(name = "ignoreStatusBarIconColor", ExpandedNotificationClass.clazz) 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] 的应用名称 * 获取 [ExpandedNotificationClass] 的应用名称
@@ -135,14 +143,59 @@ class HookEntry : YukiHookXposedInitProxy {
* @return [String] * @return [String]
*/ */
private fun PackageParam.findAppName(instance: Any?) = safeOf(default = "<unknown>") { 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 * 判断通知是否来自 MIPUSH
* @return [Boolean] * @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 private val PackageParam.globalContext
get() = safeOfNull { 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 it: (Bitmap) -> Unit
) = safeRun(msg = "GetSmallIconOnSet") { ) = safeRun(msg = "GetSmallIconOnSet") {
if (iconDrawable == null) return@safeRun if (iconDrawable == null) return@safeRun
/** 判断是否不是灰度图标 */ /** 如果没开启修复 APP 的彩色图标 */
val isNotGrayscaleIcon = !isGrayscaleIcon(context, iconDrawable) if (!prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)) return@safeRun
/** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */ /** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */
expandedNf?.also { notifyInstance -> expandedNf?.also { notifyInstance ->
/** 判断是否不是灰度图标 */
val isNotGrayscaleIcon = notifyInstance.isXmsf || !isGrayscaleIcon(context, iconDrawable)
/** 目标彩色通知 APP 图标 */ /** 目标彩色通知 APP 图标 */
var customIcon: Bitmap? = null var customIcon: Bitmap? = null
if (prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)) if (prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true))
run { run {
IconPackParams.iconDatas.forEach { IconPackParams.iconDatas.forEach {
if ((notifyInstance.opPkgName == it.packageName || 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 { 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) = private fun PackageParam.hookNotifyIconOnSet(context: Context, expandedNf: StatusBarNotification?, iconImageView: ImageView) =
safeRun(msg = "AutoSetAppIconOnSet") { safeRun(msg = "AutoSetAppIconOnSet") {
/** 如果没开启修复 APP 的彩色图标 */
if (!prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true)) return@safeRun
/** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */ /** 获取通知对象 - 由于 MIUI 的版本迭代不规范性可能是空的 */
expandedNf?.let { notifyInstance -> expandedNf?.let { notifyInstance ->
/** 是否 Hook 彩色通知图标 */ /** 是否开启修复 APP 的彩色图标 */
val isHookColorIcon = prefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true) val isNotifyIconFix = prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true)
/** 新版风格反色 */ /** 新版风格反色 */
val newStyle = if (context.isSystemInDarkMode) 0xFF2D2D2D.toInt() else Color.WHITE 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 iconDrawable = notifyInstance.notification.smallIcon.loadDrawable(context)
/** 判断图标风格 */ /** 判断图标风格 */
val isGrayscaleIcon = isGrayscaleIcon(context, iconDrawable) val isGrayscaleIcon = !notifyInstance.isXmsf && isGrayscaleIcon(context, iconDrawable)
/** 自定义默认小图标 */ /** 自定义默认小图标 */
var customIcon: Bitmap? = null var customIcon: Bitmap? = null
@@ -245,7 +308,7 @@ class HookEntry : YukiHookXposedInitProxy {
/** 自定义默认小图标颜色 */ /** 自定义默认小图标颜色 */
var customIconColor = 0 var customIconColor = 0
if (isHookColorIcon) run { if (isNotifyIconFix) run {
IconPackParams.iconDatas.forEach { IconPackParams.iconDatas.forEach {
if ((notifyInstance.opPkgName == it.packageName || if ((notifyInstance.opPkgName == it.packageName ||
findAppName(notifyInstance) == it.appName) && 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 { iconImageView.apply {
/** 设置自定义小图标 */ /** 设置自定义小图标 */
setImageBitmap(customIcon) setImageBitmap(customIcon)
@@ -273,33 +336,32 @@ class HookEntry : YukiHookXposedInitProxy {
else { else {
/** 重新设置图标 - 防止系统更改它 */ /** 重新设置图标 - 防止系统更改它 */
iconImageView.setImageDrawable(iconDrawable) iconImageView.setImageDrawable(iconDrawable)
/** 判断是否开启 Hook 彩色图标 */ /** 判断如果是灰度图标就给他设置一个白色颜色遮罩 */
if (isHookColorIcon) { if (isGrayscaleIcon) iconImageView.apply {
/** 判断如果是灰度图标就给他设置一个白色颜色遮罩 */ /** 设置图标着色 */
if (isGrayscaleIcon) iconImageView.apply { setColorFilter(supportColor)
/** 设置图标色 */ /** Android 12 设置图标外圈颜色 */
setColorFilter(supportColor) if (isUpperOfAndroidS && hasIconColor)
/** Android 12 设置图标外圈颜色 */ background = DrawableBuilder().rounded().solidColor(iconColor).build()
if (isUpperOfAndroidS && hasIconColor) } else iconImageView.apply {
background = DrawableBuilder().rounded().solidColor(iconColor).build() /** 重新设置图标 */
} else iconImageView.apply { setImageDrawable(notifyInstance.compatNotifyIcon(context, iconDrawable))
clipToOutline = true /** 设置裁切到边界 */
/** 设置一个圆角轮廓裁切 */ clipToOutline = true
outlineProvider = object : ViewOutlineProvider() { /** 设置一个圆角轮廓裁切 */
override fun getOutline(view: View, out: Outline) { outlineProvider = object : ViewOutlineProvider() {
out.setRoundRect( override fun getOutline(view: View, out: Outline) {
0, 0, out.setRoundRect(
view.width, view.height, 5.dp(context) 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) notifyInstance.notification.smallIcon.loadDrawable(context)
/** 判断是否不是灰度图标 */ /** 判断是否不是灰度图标 */
val isNotGrayscaleIcon = !isGrayscaleIcon(context, iconDrawable) val isNotGrayscaleIcon = notifyInstance.isXmsf || !isGrayscaleIcon(context, iconDrawable)
/** 获取目标修复彩色图标的 APP */ /** 获取目标修复彩色图标的 APP */
var isTargetApp = false var isTargetFixApp = false
run { /** 如果开启了自定义通知图标优化 */
IconPackParams.iconDatas.forEach { if (prefs.getBoolean(ENABLE_NOTIFY_ICON_FIX, default = true))
if ((notifyInstance.opPkgName == it.packageName || run {
findAppName(notifyInstance) == it.appName) && IconPackParams.iconDatas.forEach {
isAppNotifyHookOf(it) if ((notifyInstance.opPkgName == it.packageName ||
) { findAppName(notifyInstance) == it.appName) &&
if (isNotGrayscaleIcon || isAppNotifyHookAllOf(it)) isTargetApp = true isAppNotifyHookOf(it)
return@run ) {
if (isNotGrayscaleIcon || isAppNotifyHookAllOf(it)) isTargetFixApp = true
return@run
}
} }
} }
}
/** /**
* 如果开启了修复 APP 的彩色图标
* 只要不是灰度就返回彩色图标 * 只要不是灰度就返回彩色图标
* 否则不对颜色进行反色处理防止一些系统图标出现异常 * 否则不对颜色进行反色处理防止一些系统图标出现异常
*/ */
if (isTargetApp && prefs.getBoolean(ENABLE_NOTIFY_ICON_HOOK, default = true)) if (isTargetFixApp) false else isNotGrayscaleIcon
false
else isNotGrayscaleIcon
} ?: true } ?: true
} else false } else false
override fun onHook() = encase { override fun onHook() = encase {
configs { configs {
debugTag = "MIUINativeNotifyIcon" debugTag = "MIUINativeNotifyIcon"
isDebug = prefs.getBoolean(ENABLE_MODULE_LOG) isDebug = false
} }
loadApp(SYSTEMUI_PACKAGE_NAME) { loadApp(SYSTEMUI_PACKAGE_NAME) {
when { when {
@@ -375,9 +436,9 @@ class HookEntry : YukiHookXposedInitProxy {
* 因为之前的 MIUI 版本的状态栏图标颜色会全部设置为白色的 - 找不到修复的地方就直接判断版本了 * 因为之前的 MIUI 版本的状态栏图标颜色会全部设置为白色的 - 找不到修复的地方就直接判断版本了
* 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook * 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook
*/ */
replaceAny { if (hasIgnoreStatusBarIconColor()) false else isShowMiuiStyle() } replaceAny { if (hasIgnoreStatusBarIconColor) false else isShowMiuiStyle }
} }
if (hasIgnoreStatusBarIconColor()) if (hasIgnoreStatusBarIconColor)
injectMember { injectMember {
method { method {
name = "ignoreStatusBarIconColor" name = "ignoreStatusBarIconColor"
@@ -408,7 +469,7 @@ class HookEntry : YukiHookXposedInitProxy {
} }
afterHook { afterHook {
/** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */ /** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */
if (hasIgnoreStatusBarIconColor() || !isShowMiuiStyle()) if (hasIgnoreStatusBarIconColor || !isShowMiuiStyle)
(globalContext ?: args[0] as Context).also { context -> (globalContext ?: args[0] as Context).also { context ->
hookSmallIconOnSet( hookSmallIconOnSet(
context = context, 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) if (NotificationHeaderViewWrapperInjectorClass.hasClass)
findClass(NotificationHeaderViewWrapperInjectorClass).hook { NotificationHeaderViewWrapperInjectorClass.hook {
/** 修复下拉通知图标自动设置回 APP 图标的方法 */ /** 修复下拉通知图标自动设置回 APP 图标的方法 */
injectMember { injectMember {
var isUseLegacy = false var isUseLegacy = false
@@ -485,30 +521,30 @@ class HookEntry : YukiHookXposedInitProxy {
} }
} }
else else
findClass(NotificationHeaderViewWrapperClass).hook { NotificationHeaderViewWrapperClass.hook {
/** 之前的版本解决方案 */ /** 之前的版本解决方案 */
injectMember { injectMember {
method { name = "handleHeaderViews" } method { name = "handleHeaderViews" }
afterHook { afterHook {
/** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */ /** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */
if (!hasIgnoreStatusBarIconColor() && isShowMiuiStyle()) return@afterHook if (!hasIgnoreStatusBarIconColor && isShowMiuiStyle) return@afterHook
/** 获取小图标 */ /** 获取小图标 */
val iconImageView = field { val iconImageView =
classSet = NotificationHeaderViewWrapperClass.clazz NotificationHeaderViewWrapperClass.clazz
name = "mIcon" .field { name = "mIcon" }.of<ImageView>(instance) ?: return@afterHook
}.of<ImageView>(instance) ?: return@afterHook
/** 从父类中得到 mRow 变量 - [ExpandableNotificationRowClass] */ /**
field { * 从父类中得到 mRow 变量 - [ExpandableNotificationRowClass]
classSet = NotificationViewWrapperClass.clazz * 获取其中的得到通知方法
name = "mRow" */
}.get(instance).apply { val expandedNf =
/** 获取其中的得到通知方法 */ ExpandableNotificationRowClass.clazz
val expandedNf = .method { name = "getStatusBarNotification" }
ExpandableNotificationRowClass.clazz.method(name = "getStatusBarNotification") .get(NotificationViewWrapperClass.clazz.field { name = "mRow" }.get(instance).self)
?.call<StatusBarNotification>(instance = self) .invoke<StatusBarNotification>()
/** 执行 Hook */ /** 执行 Hook */
hookNotifyIconOnSet(iconImageView.context, expandedNf, iconImageView) hookNotifyIconOnSet(iconImageView.context, expandedNf, iconImageView)
}
} }
} }
} }

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * 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 * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -59,7 +59,7 @@ object IconPackParams {
"6hjwnGqds8tgBlgVQpiem+rb+P5DAywCtkJzjY8PzkvfGYdm8IkBGuk3E9AMvnGARvrNJmgGL/bn\n" + "6hjwnGqds8tgBlgVQpiem+rb+P5DAywCtkJzjY8PzkvfGYdm8IkBGuk3E9AMvnGARvrNJmgGL/bn\n" +
"2v+TFdAMnvX4+T2wDJrBRwdopN9kfhMbiUQikUgkEolEIpGy+QJozXWVnxEugwAAAABJRU5ErkJg\n" + "2v+TFdAMnvX4+T2wDJrBRwdopN9kfhMbiUQikUgkEolEIpGy+QJozXWVnxEugwAAAABJRU5ErkJg\n" +
"gg==").bitmap, "gg==").bitmap,
iconColor = 0xff85db88.toInt(), iconColor = 0xff72c476.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -139,6 +139,7 @@ object IconPackParams {
"HZK6JZV+lv6U9FbFr7tbzrlXKYJUSxrR37v3d+dcNTCm8jfiTc65+9PwX3ko/gf26TdqiU9QJmB/\n" + "HZK6JZV+lv6U9FbFr7tbzrlXKYJUSxrR37v3d+dcNTCm8jfiTc65+9PwX3ko/gf26TdqiU9QJmB/\n" +
"9lokuu8yg+JX5WiCILP2N3LaAHtiQlib7dwE6AKGvQDDFB8w/wwXL5k5QI2KL39Nkh5Leuycs15j\n" + "9lokuu8yg+JX5WiCILP2N3LaAHtiQlib7dwE6AKGvQDDFB8w/wwXL5k5QI2KL39Nkh5Leuycs15j\n" +
"cnJycnJyMuEXxX+pSnClwogAAAAASUVORK5CYII=").bitmap, "cnJycnJyMuEXxX+pSnClwogAAAAASUVORK5CYII=").bitmap,
iconColor = 0xff82529d.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -205,6 +206,30 @@ object IconPackParams {
"7V6pVEilUiSTSZLJJEEQrOZkGrhlZs9bn25XXXW1xfQHr/RmrURpKCwAAAAASUVORK5CYII=").bitmap, "7V6pVEilUiSTSZLJJEEQrOZkGrhlZs9bn25XXXW1xfQHr/RmrURpKCwAAAAASUVORK5CYII=").bitmap,
contributorName = "fankes" 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( IconDataBean(
isEnabled = true, isEnabled = true,
isEnabledAll = true, isEnabledAll = true,
@@ -220,6 +245,7 @@ object IconPackParams {
"2qsWwFEh4ii1jxeMfgIF+ZmT+Zd49y4MzEvqSvocX8eJO0kXZvanOFgKAZYkXUpajShWh4GkLTMb\n" + "2qsWwFEh4ii1jxeMfgIF+ZmT+Zd49y4MzEvqSvocX8eJO0kXZvanOFgKAZYkXUpajShWh4GkLTMb\n" +
"vg5UPz7sq/0R0shxvzhQDVmL5+JNybUa8hhRxJeSazXkV0QRX0qu4+5aG5K+S1qJZTQjD5J+mNnP\n" + "vg5UPz7sq/0R0shxvzhQDVmL5+JNybUa8hhRxJeSazXkV0QRX0qu4+5aG5K+S1qJZTQjD5J+mNnP\n" +
"1CKZ/4K/9OOkaYhf6uEAAAAASUVORK5CYII=").bitmap, "1CKZ/4K/9OOkaYhf6uEAAAAASUVORK5CYII=").bitmap,
iconColor = 0xff72c476.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -242,7 +268,7 @@ object IconPackParams {
"agKcAD4qzycXt4HZj5OeEfEI+AK4XJpSPnZGxJ2sTNPrwHHSI+XzxhlgaUQMjUgzR8RV4EPgVMe1\n" + "agKcAD4qzycXt4HZj5OeEfEI+AK4XJpSPnZGxJ2sTNPrwHHSI+XzxhlgaUQMjUgzR8RV4EPgVMe1\n" +
"ns0fwMpc1yzqWnWwXZ9ABfhRfaXQY6oz1M3mT3q2ksvqOjOSp0XTzItJbwneARYDrb6jEbgCXAC+\n" + "ns0fwMpc1yzqWnWwXZ9ABfhRfaXQY6oz1M3mT3q2ksvqOjOSp0XTzItJbwneARYDrb6jEbgCXAC+\n" +
"B36oLBpjjNEo/wOVy3FIguSj2QAAAABJRU5ErkJggg==").bitmap, "B36oLBpjjNEo/wOVy3FIguSj2QAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xffa1c1f8.toInt(), iconColor = 0xff5f94e2.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -251,24 +277,27 @@ object IconPackParams {
appName = "浏览器", appName = "浏览器",
packageName = "com.android.browser", packageName = "com.android.browser",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" + iconBitmap = ("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").bitmap, "vXUKNRIvpOWd1Y2fK+lzhRVuzcAuM+tPG8j8eZqoXirlN/CS8J2ZnZ81mNaNlySZ2SFJ1zUkpXD8\n" +
"lmdCyjEiSWa2T9Fb2i9lZhWInWZ2dilMRN88b8/Cjb1l5uzCzVSAl5tk4GcC67QihlYAbzTIwJ/A\n" +
"c8AFDTWRMLQa2FGSgV+JypxLm2YgxdBFwKOEN8KngO3ABjwb4nko7f9akgR0SOrV9B/Oap8/FDU5\n" +
"qs5yt5n9U5b2v8i29BvbxMLkAAAAAElFTkSuQmCC").bitmap,
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -300,7 +329,7 @@ object IconPackParams {
"OpgjkLRV0sfpXq8KmVAddrCTNChpLLEYVRhXNoMymOB7mLIX1p3U76lYRAsYDt2/wvOUXEnzxAIY\n" + "OpgjkLRV0sfpXq8KmVAddrCTNChpLLEYVRhXNoMymOB7mLIX1p3U76lYRAsYDt2/wvOUXEnzxAIY\n" +
"wLH02nPT30O2ccYoWVf2mYR/Hh0m23dsP9myltlXk9PJlhkuB052+v8F+AL4CGjWln9N5l/CCEZS\n" + "wLH02nPT30O2ccYoWVf2mYR/Hh0m23dsP9myltlXk9PJlhkuB052+v8F+AL4CGjWln9N5l/CCEZS\n" +
"HWRiiAAAAABJRU5ErkJggg==").bitmap, "HWRiiAAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xff73aee6.toInt(), iconColor = 0xff6bb8f1.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -443,7 +472,6 @@ object IconPackParams {
"AUp2ybcMlUzSadEXzrnfko4kPRjyLHmQdORjiziVZQgbeyjZx1pI9EViSZKvbpDwy/JSPrntiXWS\n" + "AUp2ybcMlUzSadEXzrnfko4kPRjyLHmQdORjiziVZQgbeyjZx1pI9EViSZKvbpDwy/JSPrntiXWS\n" +
"2xBap7MtuLa2mTe+6fl/f3zTZJJmXUvUYJZJuuvaogZ3maSzri1qcJbsD7SZcw5JJ77huXMl6cQ7\n" + "2xBap7MtuLa2mTe+6fl/f3zTZJJmXUvUYJZJuuvaogZ3maSzri1qcJbsD7SZcw5JJ77huXMl6cQ7\n" +
"55DYnxD+AevUWpo12Yg8AAAAAElFTkSuQmCC").bitmap, "55DYnxD+AevUWpo12Yg8AAAAAElFTkSuQmCC").bitmap,
iconColor = 0xfff4b700.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -472,7 +500,7 @@ object IconPackParams {
"8WQ2/vs8R8yPtbzrGP4qLCKZ8uQDM89Pj3VK7xTpN7v3ab5kgCZ4Hygd6s56lOQHP9aSjFYc4c8+\n" + "8WQ2/vs8R8yPtbzrGP4qLCKZ8uQDM89Pj3VK7xTpN7v3ab5kgCZ4Hygd6s56lOQHP9aSjFYc4c8+\n" +
"2VfYlJq0hF7XGuybTcBhjayij9UTtwBmnercUFCSgCWZ9EXjPTb6v5Y6/QnBGzCFeMMip3K4h3h8\n" + "2VfYlJq0hF7XGuybTcBhjayij9UTtwBmnercUFCSgCWZ9EXjPTb6v5Y6/QnBGzCFeMMip3K4h3h8\n" +
"45wzya4+GPQvC0oCqCGSLReCbSjvIH3TXm97/+M//kH8BEhmToz+KexyAAAAAElFTkSuQmCC").bitmap, "45wzya4+GPQvC0oCqCGSLReCbSjvIH3TXm97/+M//kH8BEhmToz+KexyAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xffe80000.toInt(), iconColor = 0xffe89b26.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -891,20 +919,16 @@ object IconPackParams {
isEnabledAll = false, isEnabledAll = false,
appName = "小米视频", appName = "小米视频",
packageName = "com.miui.video", packageName = "com.miui.video",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" + iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAK0SURBVGiB7Zo9aBRRGEXvZ0RFgq2FBhG0URKwlICIomKTqLAKBpRgo40REksxsRMT\n" + "CHwIZIgAAAHiSURBVFiF7Zm/axRBAEbfdwQrO4uQJq2k90dMkSJICkmjSAoLCTGYlCks0iWpxX8g\n" +
"AmITGyVKBJsECyslWAj+oGsRQRBR1M5IxM4iHIt5SybrzrzJ7nNnlD3lvjP3vcv87OzsSC0KClAC\n" + "IiKIjShY2AhimxQpNIKQIFwIBjSp7JLmS7HesYTL3oadnbngvWp2Z/n27TAzuzsDFxCdVWF7EBiJ\n" +
"5oAysMF9dp10LjjvuMebjM3zzOPudV6fxysDw9UlLldJ07Gxh57AI84b8nhXnbcR+J7ifQQ2J6yr\n" + "6JKnKalZ+mrbi7a/Oj3fbC+VEX6T2rQDn4qEp1LbFXA379rIlR+X7kPxeWr7UuugPRBtHwJXkiiV\n" +
"FqV4kXINYdyNrQfepwQtADtWuAe7Pd5sbG13Pe5cvEgS5914lyesDLQ5d8bjHnXeKY93K+vhmKUI\n" + "Y1jSHvxradsj9LYwwGCr0Dh9ooe53Co0iq7qVfrSsehLx6Kq9CrwKoTIeagivSppRdIMcBV4G8ip\n" +
"wCHnHPN4085bC7xO8X4BXc694sm85LytpByOWYssAFucd9HjXnPedmA+xfsEtDt3ypNZct6BJCFr\n" + "K0G6h6RtSdPANeBjiMwigvZpSZuSpoDbwJeQ2XlqGYiSPkuaAO4DG6Hza509JL2TNArMAVuhcqNM\n" +
"EYByzJ3wuGect9/jPXXeOuC5x+107rlagyspAnAv5j/2uN3O6/d4k87bSfqV7AOwxrmj1YOSZG5w\n" + "eZJeANeBJ8Bu1bxo87SkI0nPgJtUnGmiv1wk/Qb+VsmIKm37ju0PwKMqOQOBfAqxPQnMA/dC5NUq\n" +
"+fU4BTMbJjrU+j3qDTObz5CNmY0AvZJ2+eautd7K5/8FK94jRcTMhitF8MlFxsxsVd6LCEWrSNFo\n" + "bXuCTHY6ZG4t0rbHyWQf1JEfVNr2GJnsw5C5pwkibfsGmexsiLxuVJFett0EbhF5zaRqS78MYnFO\n" +
"FSkaqwPn3ZT0SNImSQclHQ6cn47nNiIrpRq5J4EXgfITCVlkrrpELLsNGAS+BJinJlK4c+Rb0oCZ\n" + "/ss/lyT0pWNxoaV/JbUoR/vLsAEgaQc4SKZTjj+tQr57rCcQKcs+Z0ivxXcpzXNJxx1rbL9Os6VS\n" +
"LZrZmKTdksYkLQaacxlNO9nN7KuZDSkqNBU6v+lXLTN7aWZ9knolzfr8rOR2+TWzB2a2T9JZSe8a\n" + "yPuuj2R7wfb31Ka2f9ie6eRYtPk5RLbclYI9ST8T3btPmxN1pTrd8xQi1gAAAABJRU5ErkJggg==").bitmap,
"zcv9e8TMJhQdbiON5OReRJLM7If7cXSn3oxCFIlxv94Ni1bkVb0bFq3IiXo3LEwRoluc8Xq3z70I\n" +
"0AncVgPnhxT+7jczRE8aByUNSWpvNC+XIsBpRSU6Q2U2tQiwR1GBntDZTSkCdCgqMPC3J2qUn8C2\n" +
"hOwB4HOAORIJWQSiv+gq/1x1AD3Ak0DZqUhLj0xbTxqLQqtI0WgVKRqVIm9yXUVjvJWWiszkuJBG\n" +
"Wf5bn6WXav4V/nyppkWB+A0UKO3gohxbnAAAAABJRU5ErkJggg==").bitmap,
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -959,8 +983,34 @@ object IconPackParams {
"XJeAll4JkTEwEPid8h/M3cBkYECu3zfAJGqL0qol0GGgNzZ3pYEmAHuAdyWG/gP+SEy/qDCe4jTw\n" + "XJeAll4JkTEwEPid8h/M3cBkYECu3zfAJGqL0qol0GGgNzZ3pYEmAHuAdyWG/gP+SEy/qDCe4jTw\n" +
"U58FKAg0EthI7T5xxRPgGLAg1IeJESYFMFK1F/75PwxI0vPM8Ui19+s9MfWbaKKJcnwCIC7Ye698\n" + "U58FKAg0EthI7T5xxRPgGLAg1IeJESYFMFK1F/75PwxI0vPM8Ui19+s9MfWbaKKJcnwCIC7Ye698\n" +
"lvkAAAAASUVORK5CYII=").bitmap, "lvkAAAAASUVORK5CYII=").bitmap,
iconColor = 0xffecc833.toInt(), iconColor = 0xff29cbb6.toInt(),
contributorName = "fankes" 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( IconDataBean(
isEnabled = true, isEnabled = true,
@@ -1013,7 +1063,7 @@ object IconPackParams {
"23Sr8S+B4+Rmkt/Ugz1AjisVmqaZvUj6MPWEaGam3hSpmqW0EG6AdxVOp3LvV8DzfR+iL8xd4P0Y\n" + "23Sr8S+B4+Rmkt/Ugz1AjisVmqaZvUj6MPWEaGam3hSpmqW0EG6AdxVOp3LvV8DzfR+iL8xd4P0Y\n" +
"ArwErgQJMRDoAfApQIC3QOZf0SECzdPb5O0UMP8VeArcKuLF9buqI9ARSbOS5iWdkTQl6Vj8PCVp\n" + "ArwErgQJMRDoAfApQIC3QOZf0SECzdPb5O0UMP8VeArcKuLF9buqI9ARSbOS5iWdkTQl6Vj8PCVp\n" +
"V9KOpD99jw+SNszsSxkeampq0vkLMZsS+4iBecAAAAAASUVORK5CYII=").bitmap, "V9KOpD99jw+SNszsSxkeampq0vkLMZsS+4iBecAAAAAASUVORK5CYII=").bitmap,
iconColor = 0xffe2c430.toInt(), iconColor = 0xffeaa833.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -1043,7 +1093,7 @@ object IconPackParams {
IconDataBean( IconDataBean(
isEnabled = true, isEnabled = true,
isEnabledAll = false, isEnabledAll = false,
appName = "阅读", appName = "多看阅读",
packageName = "com.duokan.reader", packageName = "com.duokan.reader",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" + iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" +
"CHwIZIgAAAMYSURBVGiB7ZrPq1RlGMc/z7gR8se2gshUyrJFdMlcRFx0YwsthBZhiEElIiX2D+RC\n" + "CHwIZIgAAAMYSURBVGiB7ZrPq1RlGMc/z7gR8se2gshUyrJFdMlcRFx0YwsthBZhiEElIiX2D+RC\n" +
@@ -1088,7 +1138,7 @@ object IconPackParams {
"vim8Aogzj0ytwPXRp4hh1j3JAajc4AnCezYWurGaIz8GaxsLEfFGwKF8ZIDypyRN4glGJy8yidg1\n" + "vim8Aogzj0ytwPXRp4hh1j3JAajc4AnCezYWurGaIz8GaxsLEfFGwKF8ZIDypyRN4glGJy8yidg1\n" +
"2EM4HW0LCwC9QnYRAo9rM7WcF2syA/pPNprClnV/MKDIRGwnlJmwqU84HEJxQ4QmPNJXQjHJK+Yf\n" + "2EM4HW0LCwC9QnYRAo9rM7WcF2syA/pPNprClnV/MKDIRGwnlJmwqU84HEJxQ4QmPNJXQjHJK+Yf\n" +
"PIewtmNUIpB7/lSGFIyX0x+eucnaBocfns2lpg/P/gI89K2h8DX3SQAAAABJRU5ErkJggg==").bitmap, "PIewtmNUIpB7/lSGFIyX0x+eucnaBocfns2lpg/P/gI89K2h8DX3SQAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xfff5d952.toInt(), iconColor = 0xffd6bc49.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -1108,7 +1158,7 @@ object IconPackParams {
"oUEVZoHLAxOIibyuIXwITFFgn9aEyJmKEi+BYWcCcYDPJSUeus7+B0Tb8KLccZ07FfIP2eL8dJ03\n" + "oUEVZoHLAxOIibyuIXwITFFgn9aEyJmKEi+BYWcCcYDPJSUeus7+B0Tb8KLccZ07FfIP2eL8dJ03\n" +
"q4uPSrIN6FwkE+B2gVm55jpvJth3+wA45ipn7gbRGHNS0n2LWtslnaqcqGmAyZwZ+QCcdp3TCqIj\n" + "q4uPSrIN6FwkE+B2gVm55jpvJth3+wA45ipn7gbRGHNS0n2LWtslnaqcqGmAyZwZ+QCcdp3TCqIj\n" +
"mSSfgDHX2QoTk3kKnAe2uc5UGmC/6wwej8fj+Sv4BUjRcEDGSSFRAAAAAElFTkSuQmCC").bitmap, "mSSfgDHX2QoTk3kKnAe2uc5UGmC/6wwej8fj+Sv4BUjRcEDGSSFRAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xfff1c12d.toInt(), iconColor = 0xffecc34a.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -1128,7 +1178,7 @@ object IconPackParams {
"oUEVZoHLAxOIibyuIXwITFFgn9aEyJmKEi+BYWcCcYDPJSUeus7+B0Tb8KLccZ07FfIP2eL8dJ03\n" + "oUEVZoHLAxOIibyuIXwITFFgn9aEyJmKEi+BYWcCcYDPJSUeus7+B0Tb8KLccZ07FfIP2eL8dJ03\n" +
"q4uPSrIN6FwkE+B2gVm55jpvJth3+wA45ipn7gbRGHNS0n2LWtslnaqcqGmAyZwZ+QCcdp3TCqIj\n" + "q4uPSrIN6FwkE+B2gVm55jpvJth3+wA45ipn7gbRGHNS0n2LWtslnaqcqGmAyZwZ+QCcdp3TCqIj\n" +
"mSSfgDHX2QoTk3kKnAe2uc5UGmC/6wwej8fj+Sv4BUjRcEDGSSFRAAAAAElFTkSuQmCC").bitmap, "mSSfgDHX2QoTk3kKnAe2uc5UGmC/6wwej8fj+Sv4BUjRcEDGSSFRAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xfff1c12d.toInt(), iconColor = 0xffecc34a.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -1400,7 +1450,6 @@ object IconPackParams {
"kn5ETP1se3WMZqmlFbusDsUK9lKQy7avZneSArA1sC/ep2r2SkV2pwr2QpBTtl+kCrYd5KXt4zkE\n" + "kn5ETP1se3WMZqmlFbusDsUK9lKQy7avZneSArA1sC/ep2r2SkV2pwr2QpBTtl+kCrYd5KXt4zkE\n" +
"SwVpelevfVEKpc2KjNj+nkuwrSAPbJ/PKdjK0rK9LbdgqSAL/T4YLiFYKkjd77UJ26H/HNsDWAXc\n" + "SwVpelevfVEKpc2KjNj+nkuwrSAPbJ/PKdjK0rK9LbdgqSAL/T4YLiFYKkjd77UJ26H/HNsDWAXc\n" +
"n3f3Hi2pWeTpdxZ+/wLYKOmm7bBPnYH8AqH34VsrgGUmAAAAAElFTkSuQmCC").bitmap, "n3f3Hi2pWeTpdxZ+/wLYKOmm7bBPnYH8AqH34VsrgGUmAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xfffbdc00.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -1796,14 +1845,49 @@ object IconPackParams {
isEnabledAll = false, isEnabledAll = false,
appName = "中国工商银行", appName = "中国工商银行",
packageName = "com.icbc", packageName = "com.icbc",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" + iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n" +
"CHwIZIgAAADbSURBVGiB7ZpLCsMwDESl4oOlJws9mdOTTTdZxkrxhwxiHmQTY9kPzKCYmCXBAWxL\n" + "bWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp\n" +
"CrsfV++XrQcAC+oe7v6+GgBQzWy6zGt2waeQCBsSYeMutS6T56/Ca+K3NteLRNzdBxadTrTXNEdL\n" + "bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6\n" +
"ImykESnR4EjCqGnsJM3RkggbEmGjmNlnYP4+ayMnI3vpA8CGNs0uFUAN5nXHcpqjJRE2JMJGiRLm\n" + "eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2\n" +
"AXYAXZFebEEnOoDiVyJspBEJv9ltTRP3PZ8emommm0Y2JMKGRNjQlekNujLtRSJsSISNNL85peEH\n" + "MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo\n" +
"6cabOwaCnhcAAAAASUVORK5CYII=").bitmap, "dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw\n" +
"dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv\n" +
"IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS\n" +
"ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD\n" +
"cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJ\n" +
"RD0ieG1wLmlpZDoyMTU2MUMyOThGOEUxMUVDOTQ5NUZGMTVFMEJEOUZDNiIgeG1wTU06RG9jdW1l\n" +
"bnRJRD0ieG1wLmRpZDoyMTU2MUMyQThGOEUxMUVDOTQ5NUZGMTVFMEJEOUZDNiI+IDx4bXBNTTpE\n" +
"ZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNTYxQzI3OEY4RTExRUM5NDk1\n" +
"RkYxNUUwQkQ5RkM2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNTYxQzI4OEY4RTExRUM5\n" +
"NDk1RkYxNUUwQkQ5RkM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBt\n" +
"ZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+h/0NYwAABW9JREFUeNrkmltsVFUUhqfTI9VSLF7oRYHG\n" +
"SmyAmFBUIDSkQaXGWi8xagzii7US5cWoiTG8mRAe5N1o9MWkr8SAFi+Z4CV9sII1YvASeaiNlRZJ\n" +
"L/Rip50Z/538myyX+5zZc+agUFfypT1nzl57rb3XXvtyTkWhUEglKGlQDa4GNWAlWM7fZsAEmAZ/\n" +
"glmQT6riIJWsVIEb6MB1IY6M828OzF1OjlwDNoFWsAPcCdYVKfMLOAG+BIPg23KdqigjtEwjPAUe\n" +
"BQ8aXTH1GAOOgsOgFyzG0wJHYvA4OFZIXo5Rd8k2ldoj68FB8FBEDxiFJ8EYOEeMrCJ14I4i5Y+A\n" +
"18APlyK0OsGbYK3jN5OBPgEfgG/AWQ7uWREqATOaGfwNYDPoAh28r+VX8DzoSzK09oFJRyiYe4dA\n" +
"C6iJERI1LHsoQv8+H10+lR0EC6qCedALNoJ0zHEmSVNXL3VLWaANZTliWmNRKR4HexMwPoy9rEPK\n" +
"YrGeiVK4C0wphUOg4xI6YelgXVKmaFNJjqwDI0rRKLs/9S+xkXVKGaFt3un3CCc5K/NgF2diI7eA\n" +
"e5kq8471ltUxpn5bDe4PKVfJeyb7DfOeWSl8yqWPlaNM/0WzVifIqvjsFr/fBk56TG5fgZtEubXg\n" +
"lEe5z0GTKNetxmmWNkaGlkmHGaW4Vz3zTAkzdZuKe195TNXZq37P6HSfVh30CNgpri+AA44Q8BET\n" +
"Ij+K6+9Bf8zF7AHaYmUnbXUWMLPrbrV0eBucVkpz6volrmQD4eg0nZgQz42Ah0ELV8x5MVbawesR\n" +
"dZymLS/bFQltPczVw99Ca6uajGY466aKhNaOBDJUl9LpWji20CY5KW91hdZdYJkKjWHPXWESO8ti\n" +
"MkybrCyjzRcVpJne2lTBDy92W7SMJ+DIhMczs7RJShttTweM1xvBFlVowNOIV8EZMUbS3JP3OXS0\n" +
"c6BWcXzYMbLes64B2mZXy1u4kv4jYBddC5pEgZ/AaIgynbV2hzz3Art+iNctnMxWeBgclhlHaVsr\n" +
"r5to+5RpvVoeGMjCv0fsoS94tp7ZRN2qNmUrPMuG1TFH26TDxvbagCcdtarAOW6MXGLi9B3wNNNk\n" +
"TqTMKoaqlajjnjkufSrVVPAW+CykzIzYcVoxtq8MuGOrcTiSi2it57gVtXEuJ9R31bY1bG54Fnwk\n" +
"d6v8ez7C+ZzDEWP78rjHQYFowUKMWd8+e5XDkSDOSUrA7pp2xHeYwlrOsk/4nAlEOPleSBnToy86\n" +
"bLL2rlL3zHMzaebwSYcj1SEVdXk6EXey7AZ3h/xW7XDE2D6R5j/nVQw3qkGrlfnIEFOllVM8XfGR\n" +
"6ohTzUY1Zoztk6arsiYPs+JmkfPrQ+aSnCMUfmbrV5Acs9tv4rkz3KzdwzCTE+LtYE9EHVbqaJts\n" +
"LGN7NmAaPMtZs1m0iJk1v/NovTdUy0fJCaJlm3IkTLap3hqg7Qtptsi8Y6/wgGcYNSaw1qr3DLdO\n" +
"da+ftuflYPyaYWbFnACu8aggiXccPjrW0CYrWdr8j42VGYwZHg7YFugBrxSpoJ0pWc7Q0zw6HXP0\n" +
"3ma+CMoJJ7Z7ONKjIiRDm52HD3tAXp0lbVDP9Hjuu/tBgyhnDhQGPcs+qercoM7Y8rQ1dM/+Pjgu\n" +
"rs0ib796JusZLttF8rCZcJNnWV3HfrXgPE5byzoOagZfeLSqOemoF+VWgwGPcn3g5lKPg+Ie0DVw\n" +
"bFQ4cr6dI/ocy/HrOWCjDugyYuFY1gHdFXlkuuQPsZfUa4Ul9aLninn1luTL0I/5MnRQvAydEVmt\n" +
"kttq+zK0lXub+5J4GbpkXk//bz8YuGw/4SjHkSXzUU2YU3Upv8+cxlIJfuaUtCP/2YdnfwkwABDy\n" +
"UyV45nFEAAAAAElFTkSuQmCC").bitmap,
iconColor = 0xffa90000.toInt(), iconColor = 0xffa90000.toInt(),
contributorName = "fankes" contributorName = "fankes、naicfeng"
), ),
IconDataBean( IconDataBean(
isEnabled = true, isEnabled = true,
@@ -1886,7 +1970,7 @@ object IconPackParams {
"JrSJ1wg+mtEQTphvCgyRb4O6hDCDBYTY3tQQVRANp/ViW7P9TwHh9ylp6G2270QAPTlCZH890AyQ\n" + "JrSJ1wg+mtEQTphvCgyRb4O6hDCDBYTY3tQQVRANp/ViW7P9TwHh9ylp6G2270QAPTlCZH890AyQ\n" +
"vMHto773gTONGmHeaba/XAiE6Wm2r7rghdnabD8NIQ7zetk6/wGsJc5dvdleEwAAAABJRU5ErkJg\n" + "vMHto773gTONGmHeaba/XAiE6Wm2r7rghdnabD8NIQ7zetk6/wGsJc5dvdleEwAAAABJRU5ErkJg\n" +
"gg==").bitmap, "gg==").bitmap,
iconColor = 0xff02cbf4.toInt(), iconColor = 0xff3e6deb.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -2026,26 +2110,20 @@ object IconPackParams {
isEnabledAll = false, isEnabledAll = false,
appName = "哔哩哔哩漫画", appName = "哔哩哔哩漫画",
packageName = "com.bilibili.comic", packageName = "com.bilibili.comic",
iconBitmap = ("iVBORw0KGgoAAAANSUhEUgAAADcAAAAyCAYAAAD4FkP1AAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" + iconBitmap = ("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\n" + "bwAAAABJRU5ErkJggg==").bitmap,
"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,
iconColor = 0xffd3618a.toInt(), iconColor = 0xffd3618a.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
@@ -2109,7 +2187,7 @@ object IconPackParams {
"7/t/T5a8zbX4crn8jKSjkup9A2gqMr9ed849R/J2kt1Ipst8RFH08WUrS4lGcmD2YeS6RVutEDIb\n" + "7/t/T5a8zbX4crn8jKSjkup9A2gqMr9ed849R/J2kt1Ipst8RFH08WUrS4lGcmD2YeS6RVutEDIb\n" +
"WLVq1XFJVUk7SqXSW/KdeS4yGxgYGHgDySiMj4/f2HRFGdFQMSfpqeR4e3PlZEejBkYAOEkfabKe\n" + "WLVq1XFJVUk7SqXSW/KdeS4yGxgYGHgDySiMj4/f2HRFGdFQMSfpqeR4e3PlZEejBkYAOEkfabKe\n" +
"zPgfrqzeQT35+oQAAAAASUVORK5CYII=").bitmap, "zPgfrqzeQT35+oQAAAAASUVORK5CYII=").bitmap,
iconColor = 0xff7fe3ff.toInt(), iconColor = 0xff6ba8e8.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -2520,7 +2598,7 @@ object IconPackParams {
"2SCekiREW0lRkwc982M4sq+K2J8+bZzZb3SAFeBNC8aawhtgpZPe7bg8ajY1cNnMuv2gTdvj6sYg\n" + "2SCekiREW0lRkwc982M4sq+K2J8+bZzZb3SAFeBNC8aawhtgpZPe7bg8ajY1cNnMuv2gTdvj6sYg\n" +
"+lc53r8rHJmKK60zKo8rjhSgv5PY1GlvHfQUONKLZWfTJLcipkjO4qdo/4bEC+AB8DD9vW9meVtQ\n" + "+lc53r8rHJmKK60zKo8rjhSgv5PY1GlvHfQUONKLZWfTJLcipkjO4qdo/4bEC+AB8DD9vW9meVtQ\n" +
"/AOiEUtV2iHH4AAAAABJRU5ErkJggg==").bitmap, "/AOiEUtV2iHH4AAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xffee0000.toInt(), iconColor = 0xffdd5333.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -2576,7 +2654,7 @@ object IconPackParams {
"XnmuH4eY9cSfDE4C32KGihaiyn3E+0CIp0DmW56QBGYCjwNfGse7gFvG7bjoXz/briyXX1fQOuLz\n" + "XnmuH4eY9cSfDE4C32KGihaiyn3E+0CIp0DmW56QBGYCjwNfGse7gFvG7bjoXz/briyXX1fQOuLz\n" +
"+xDxe+JSv2gl/vROA2B3uXINSSIR9SRwcQn2j2bMh50u2wn7PA3Uichh30/RxG9MGvIoURQ9XZbk\n" + "+xDxe+JSv2gl/vROA2B3uXINSSIR9SRwcQn2j2bMh50u2wn7PA3Uichh30/RxG9MGvIoURQ9XZbk\n" +
"Kqiggv8u/gGVZUO4tuzkNQAAAABJRU5ErkJggg==").bitmap, "Kqiggv8u/gGVZUO4tuzkNQAAAABJRU5ErkJggg==").bitmap,
iconColor = 0xfff9d084.toInt(), iconColor = 0xffb71c21.toInt(),
contributorName = "fankes" contributorName = "fankes"
), ),
IconDataBean( IconDataBean(
@@ -2888,7 +2966,530 @@ object IconPackParams {
iconColor = 0xffb62934.toInt(), iconColor = 0xffb62934.toInt(),
contributorName = "scrpr、fankes" 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 // TODO 可继续在这里添加更多 APP
) )
} }
} }

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * 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.BaseAdapter
import android.widget.ListView import android.widget.ListView
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.constraintlayout.utils.widget.ImageFilterView import androidx.constraintlayout.utils.widget.ImageFilterView
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.fankes.miui.notify.R 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.ui.base.BaseActivity
import com.fankes.miui.notify.utils.SystemUITool import com.fankes.miui.notify.utils.SystemUITool
import com.fankes.miui.notify.utils.showDialog 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.fankes.miui.notify.view.MaterialSwitch
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
@@ -56,6 +57,9 @@ class ConfigureActivity : BaseActivity() {
/** 回调适配器改变 */ /** 回调适配器改变 */
private var onChanged: (() -> Unit)? = null private var onChanged: (() -> Unit)? = null
/** 回调滚动事件改变 */
private var onScrollEvent: ((Boolean) -> Unit)? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_config) setContentView(R.layout.activity_config)
@@ -63,6 +67,15 @@ class ConfigureActivity : BaseActivity() {
findViewById<View>(R.id.title_back_icon).setOnClickListener { onBackPressed() } findViewById<View>(R.id.title_back_icon).setOnClickListener { onBackPressed() }
/** 刷新适配器结果相关 */ /** 刷新适配器结果相关 */
refreshAdapterResult() 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 { findViewById<View>(R.id.config_title_filter).setOnClickListener {
showDialog { showDialog {
@@ -84,7 +97,7 @@ class ConfigureActivity : BaseActivity() {
onChanged?.invoke() onChanged?.invoke()
refreshAdapterResult() refreshAdapterResult()
} else { } else {
Toast.makeText(applicationContext, "条件不能为空", Toast.LENGTH_SHORT).show() toast(msg = "条件不能为空")
it.performClick() it.performClick()
} }
} }
@@ -162,6 +175,7 @@ class ConfigureActivity : BaseActivity() {
lateinit var switchAll: MaterialSwitch lateinit var switchAll: MaterialSwitch
} }
}.apply { onChanged = { notifyDataSetChanged() } } }.apply { onChanged = { notifyDataSetChanged() } }
onScrollEvent = { post { setSelection(if (it) iconDatas.lastIndex else 0) } }
} }
/** 设置点击事件 */ /** 设置点击事件 */
findViewById<View>(R.id.config_cbr_button).setOnClickListener { findViewById<View>(R.id.config_cbr_button).setOnClickListener {
@@ -173,7 +187,7 @@ class ConfigureActivity : BaseActivity() {
flags = Intent.FLAG_ACTIVITY_NEW_TASK flags = Intent.FLAG_ACTIVITY_NEW_TASK
}) })
}.onFailure { }.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 * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -32,17 +32,17 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.widget.SwitchCompat import androidx.appcompat.widget.SwitchCompat
import androidx.constraintlayout.utils.widget.ImageFilterView import androidx.constraintlayout.utils.widget.ImageFilterView
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.fankes.miui.notify.BuildConfig import com.fankes.miui.notify.BuildConfig
import com.fankes.miui.notify.R 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_COLOR_ICON_HOOK
import com.fankes.miui.notify.hook.HookConst.ENABLE_HIDE_ICON 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
import com.fankes.miui.notify.hook.HookConst.ENABLE_MODULE_LOG 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.ui.base.BaseActivity
import com.fankes.miui.notify.utils.* import com.fankes.miui.notify.utils.*
import com.highcapable.yukihookapi.hook.factory.modulePrefs import com.highcapable.yukihookapi.hook.factory.modulePrefs
@@ -93,9 +93,9 @@ class MainActivity : BaseActivity() {
noCancelable() noCancelable()
} }
/** 判断是否 Hook */ /** 判断是否 Hook */
isHooked() -> { YukiHookModuleStatus.isActive() -> {
findViewById<LinearLayout>(R.id.main_lin_status).setBackgroundResource(R.drawable.green_round) findViewById<LinearLayout>(R.id.main_lin_status).setBackgroundResource(R.drawable.bg_green_round)
findViewById<ImageFilterView>(R.id.main_img_status).setImageResource(R.mipmap.succcess) findViewById<ImageFilterView>(R.id.main_img_status).setImageResource(R.mipmap.ic_success)
findViewById<TextView>(R.id.main_text_status).text = "模块已激活" findViewById<TextView>(R.id.main_text_status).text = "模块已激活"
} }
else -> else ->
@@ -112,24 +112,34 @@ class MainActivity : BaseActivity() {
/** 初始化 View */ /** 初始化 View */
val moduleEnableSwitch = findViewById<SwitchCompat>(R.id.module_enable_switch) val moduleEnableSwitch = findViewById<SwitchCompat>(R.id.module_enable_switch)
val moduleEnableLogSwitch = findViewById<SwitchCompat>(R.id.module_enable_log_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 notifyIconConfigItem = findViewById<View>(R.id.config_item_notify)
val hideIconInLauncherSwitch = findViewById<SwitchCompat>(R.id.hide_icon_in_launcher_switch) val hideIconInLauncherSwitch = findViewById<SwitchCompat>(R.id.hide_icon_in_launcher_switch)
val colorIconHookSwitch = findViewById<SwitchCompat>(R.id.color_icon_fix_switch) val colorIconHookSwitch = findViewById<SwitchCompat>(R.id.color_icon_fix_switch)
val notifyIconHookSwitch = findViewById<SwitchCompat>(R.id.notify_icon_fix_switch) val colorIconCompatSwitch = findViewById<SwitchCompat>(R.id.color_icon_compat_switch)
/** 设置旧版本警告 */ val colorIconCompatText = findViewById<View>(R.id.color_icon_compat_text)
findViewById<View>(R.id.config_notify_app_icon_warn).isVisible = miuiVersion == "12" val notifyIconFixSwitch = findViewById<SwitchCompat>(R.id.notify_icon_fix_switch)
val notifyIconFixButton = findViewById<View>(R.id.config_notify_app_button)
/** 获取 Sp 存储的信息 */ /** 获取 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) 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) moduleEnableSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE, default = true)
moduleEnableLogSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE_LOG, default = false) moduleEnableLogSwitch.isChecked = modulePrefs.getBoolean(ENABLE_MODULE_LOG, default = false)
hideIconInLauncherSwitch.isChecked = modulePrefs.getBoolean(ENABLE_HIDE_ICON) hideIconInLauncherSwitch.isChecked = modulePrefs.getBoolean(ENABLE_HIDE_ICON)
colorIconHookSwitch.isChecked = modulePrefs.getBoolean(ENABLE_COLOR_ICON_HOOK, default = true) 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 -> moduleEnableSwitch.setOnCheckedChangeListener { btn, b ->
if (!btn.isPressed) return@setOnCheckedChangeListener if (!btn.isPressed) return@setOnCheckedChangeListener
modulePrefs.putBoolean(ENABLE_MODULE, b) modulePrefs.putBoolean(ENABLE_MODULE, b)
moduleEnableLogSwitch.isVisible = b moduleEnableLogSwitch.isVisible = b
colorIconHookItem.isVisible = b
notifyIconConfigItem.isVisible = b && colorIconHookSwitch.isChecked
SystemUITool.showNeedRestartSnake(context = this) SystemUITool.showNeedRestartSnake(context = this)
} }
moduleEnableLogSwitch.setOnCheckedChangeListener { btn, b -> moduleEnableLogSwitch.setOnCheckedChangeListener { btn, b ->
@@ -150,19 +160,25 @@ class MainActivity : BaseActivity() {
if (!btn.isPressed) return@setOnCheckedChangeListener if (!btn.isPressed) return@setOnCheckedChangeListener
modulePrefs.putBoolean(ENABLE_COLOR_ICON_HOOK, b) modulePrefs.putBoolean(ENABLE_COLOR_ICON_HOOK, b)
notifyIconConfigItem.isVisible = b notifyIconConfigItem.isVisible = b
colorIconCompatSwitch.isVisible = b
colorIconCompatText.isVisible = b
SystemUITool.showNeedRestartSnake(context = this) SystemUITool.showNeedRestartSnake(context = this)
} }
notifyIconHookSwitch.setOnCheckedChangeListener { btn, b -> colorIconCompatSwitch.setOnCheckedChangeListener { btn, b ->
if (!btn.isPressed) return@setOnCheckedChangeListener if (!btn.isPressed) return@setOnCheckedChangeListener
modulePrefs.putBoolean(ENABLE_NOTIFY_ICON_HOOK, b) modulePrefs.putBoolean(ENABLE_COLOR_ICON_COMPAT, b)
SystemUITool.showNeedRestartSnake(context = this) 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.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 { findViewById<View>(R.id.link_with_follow_me).setOnClickListener {
runCatching { runCatching {
@@ -174,7 +190,7 @@ class MainActivity : BaseActivity() {
flags = Intent.FLAG_ACTIVITY_NEW_TASK flags = Intent.FLAG_ACTIVITY_NEW_TASK
}) })
}.onFailure { }.onFailure {
Toast.makeText(this, "你可能没有安装酷安", Toast.LENGTH_SHORT).show() toast(msg = "你可能没有安装酷安")
} }
} }
/** 项目地址点击事件 */ /** 项目地址点击事件 */
@@ -187,7 +203,7 @@ class MainActivity : BaseActivity() {
flags = Intent.FLAG_ACTIVITY_NEW_TASK flags = Intent.FLAG_ACTIVITY_NEW_TASK
}) })
}.onFailure { }.onFailure {
Toast.makeText(this, "无法启动系统默认浏览器", Toast.LENGTH_SHORT).show() toast(msg = "无法启动系统默认浏览器")
} }
} }
} }
@@ -195,7 +211,7 @@ class MainActivity : BaseActivity() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
/** MIUI 12 的版本特殊 - 所以给出提示 */ /** MIUI 12 的版本特殊 - 所以给出提示 */
if (!isWarnDialogShowing && isHooked() && miuiVersion == "12" && isMiuiNotifyStyle) if (!isWarnDialogShowing && YukiHookModuleStatus.isActive() && miuiVersion == "12" && isMiuiNotifyStyle)
showDialog { showDialog {
isWarnDialogShowing = true isWarnDialogShowing = true
title = "经典通知栏样式已启用" title = "经典通知栏样式已启用"
@@ -205,10 +221,4 @@ class MainActivity : BaseActivity() {
noCancelable() 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 * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * 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 * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * 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 * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -22,11 +22,9 @@
*/ */
package com.fankes.miui.notify.utils package com.fankes.miui.notify.utils
import android.app.Activity
import android.content.Context import android.content.Context
import android.graphics.Color
import android.widget.Toast
import com.google.android.material.snackbar.Snackbar 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 -> execShellSu(cmd = "pgrep systemui").also { pid ->
if (pid.isNotBlank()) if (pid.isNotBlank())
execShellSu(cmd = "kill -9 $pid") execShellSu(cmd = "kill -9 $pid")
else Toast.makeText(context, "ROOT 权限获取失败", Toast.LENGTH_SHORT).show() else toast(msg = "ROOT 权限获取失败")
} }
} }
cancelButton() cancelButton()
@@ -57,9 +55,7 @@ object SystemUITool {
* @param context 实例 * @param context 实例
*/ */
fun showNeedRestartSnake(context: Context) = fun showNeedRestartSnake(context: Context) =
Snackbar.make((context as Activity).findViewById(android.R.id.content), "设置需要重启系统界面才能生效", Snackbar.LENGTH_LONG) if (YukiHookModuleStatus.isActive())
.apply { context.snake(msg = "设置需要重启系统界面才能生效", actionText = "立即重启") { restartSystemUI(context) }
setActionTextColor(Color.WHITE) else context.snake(msg = "模块没有激活,更改不会生效")
setAction("立即重启") { restartSystemUI(context) }
}.show()
} }

View File

@@ -6,8 +6,8 @@
* This software is non-free but opensource software: you can redistribute it * 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 * and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either * as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published * version 3 of the License, or any later version.
* by ferredoxin. * <p>
* *
* This software is distributed in the hope that it will be useful, * This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,10 +20,11 @@
* *
* This file is Created by fankes on 2022/1/7. * 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 package com.fankes.miui.notify.utils
import android.app.Activity
import android.content.Context import android.content.Context
import android.content.pm.PackageInfo import android.content.pm.PackageInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
@@ -32,10 +33,10 @@ import android.graphics.*
import android.graphics.Bitmap.createBitmap import android.graphics.Bitmap.createBitmap
import android.os.Build import android.os.Build
import android.provider.Settings import android.provider.Settings
import android.service.notification.StatusBarNotification
import android.util.Base64 import android.util.Base64
import android.widget.Toast
import com.fankes.miui.notify.application.MNNApplication.Companion.appContext 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.classOf
import com.highcapable.yukihookapi.hook.factory.hasClass import com.highcapable.yukihookapi.hook.factory.hasClass
import com.highcapable.yukihookapi.hook.factory.method import com.highcapable.yukihookapi.hook.factory.method
@@ -145,12 +146,6 @@ val miuiFullVersion
get() = if (isMIUI) (miuiVersion + " " + findPropString(key = "ro.system.build.version.incremental")) get() = if (isMIUI) (miuiVersion + " " + findPropString(key = "ro.system.build.version.incremental"))
else "不是 MIUI 系统" else "不是 MIUI 系统"
/**
* 获取推送通知的包名
* @return [String]
*/
val StatusBarNotification.opPkgName get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) opPkg else packageName ?: ""
/** /**
* 得到安装包信息 * 得到安装包信息
* @return [PackageInfo] * @return [PackageInfo]
@@ -245,9 +240,10 @@ fun Bitmap.round(radius: Float): Bitmap =
* @return [String] * @return [String]
*/ */
fun findPropString(key: String, default: String = "") = safeOf(default) { fun findPropString(key: String, default: String = "") = safeOf(default) {
(classOf(name = "android.os.SystemProperties").method( (classOf(name = "android.os.SystemProperties").method {
name = "get", StringType, StringType name = "get"
)?.callStatic(key, default)) ?: default 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 回调 - 如果异常为空 * @param it 回调 - 如果异常为空

View File

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

View File

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

View File

@@ -36,7 +36,7 @@
android:layout_height="28dp" android:layout_height="28dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:alpha="0.85" android:alpha="0.85"
android:src="@mipmap/restart" android:src="@mipmap/ic_restart"
android:tint="@color/colorTextGray" android:tint="@color/colorTextGray"
android:tooltipText="重启系统界面" /> android:tooltipText="重启系统界面" />
</LinearLayout> </LinearLayout>
@@ -49,7 +49,7 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:layout_marginBottom="5dp" android:layout_marginBottom="5dp"
android:background="@drawable/dark_round" android:background="@drawable/bg_dark_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center"> android:gravity="center">
@@ -59,7 +59,7 @@
android:layout_height="25dp" android:layout_height="25dp"
android:layout_marginStart="25dp" android:layout_marginStart="25dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:src="@mipmap/warn" android:src="@mipmap/ic_warn"
android:tint="@color/white" /> android:tint="@color/white" />
<LinearLayout <LinearLayout
@@ -121,7 +121,7 @@
android:layout_marginLeft="15dp" android:layout_marginLeft="15dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center" android:gravity="center"
android:orientation="horizontal" android:orientation="horizontal"
@@ -132,7 +132,7 @@
android:layout_height="15dp" android:layout_height="15dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
android:alpha="0.85" android:alpha="0.85"
android:src="@mipmap/about" android:src="@mipmap/ic_about"
android:tint="@color/colorTextDark" /> android:tint="@color/colorTextDark" />
<TextView <TextView
@@ -153,7 +153,7 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:animateLayoutChanges="true" android:animateLayoutChanges="true"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
@@ -184,18 +184,19 @@
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:alpha="0.6" android:alpha="0.6"
android:lineSpacingExtra="6dp" android:lineSpacingExtra="6dp"
android:text="模块关闭后功能都将彻底停止工作,以下选项都将不再生效。" android:text="模块关闭后一切功能都将彻底停止工作。"
android:textColor="@color/colorTextDark" android:textColor="@color/colorTextDark"
android:textSize="12sp" /> android:textSize="12sp" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/config_item_color_hook"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="15dp" android:layout_marginLeft="15dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
@@ -219,6 +220,26 @@
android:text="此选项默认开启,开启后将自动对 APP 通知图标进行判断,保持高版本 API 的 APP 不规范的彩色图标不被着色为白、黑色块并对图标进行圆角优化,关闭后将按照 Android API 规范对 APP 通知进行图标着色,可能会出现着色为黑白、色块情况。" android:text="此选项默认开启,开启后将自动对 APP 通知图标进行判断,保持高版本 API 的 APP 不规范的彩色图标不被着色为白、黑色块并对图标进行圆角优化,关闭后将按照 Android API 规范对 APP 通知进行图标着色,可能会出现着色为黑白、色块情况。"
android:textColor="@color/colorTextDark" android:textColor="@color/colorTextDark"
android:textSize="12sp" /> 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>
<LinearLayout <LinearLayout
@@ -228,7 +249,8 @@
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:background="@drawable/permotion_round" android:animateLayoutChanges="true"
android:background="@drawable/bg_permotion_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
@@ -250,7 +272,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:background="@drawable/button_round" android:background="@drawable/bg_button_round"
android:gravity="center" android:gravity="center"
android:padding="10dp" android:padding="10dp"
android:singleLine="true" android:singleLine="true"
@@ -266,23 +288,9 @@
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:alpha="0.6" android:alpha="0.6"
android:lineSpacingExtra="6dp" android:lineSpacingExtra="6dp"
android:text="此选项默认开启,开启后将对优化名单内 APP 通知小图标进行色彩修复,特别是通过 MIPUSH 推送的通知,它们始终是彩色的,修复后使得它们的图标看起来更加符合原生规范。" android:text="此选项默认开启,开启后将对优化名单内 APP 通知小图标使用单色调进行修复,特别是通过 MIPUSH 推送的通知,它们始终是 APP 默认图标(彩色的 APP 图标),修复后使得它们的图标看起来更加符合 Android 原生的统一规范。"
android:textColor="@color/colorTextDark" android:textColor="@color/colorTextDark"
android:textSize="12sp" /> 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>
<LinearLayout <LinearLayout
@@ -291,7 +299,7 @@
android:layout_marginLeft="15dp" android:layout_marginLeft="15dp"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
@@ -323,7 +331,7 @@
android:layout_marginLeft="15dp" android:layout_marginLeft="15dp"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
@@ -340,7 +348,7 @@
android:layout_height="15dp" android:layout_height="15dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:alpha="0.85" android:alpha="0.85"
android:src="@mipmap/about" android:src="@mipmap/ic_about"
android:tint="@color/colorTextGray" /> android:tint="@color/colorTextGray" />
<TextView <TextView
@@ -379,7 +387,7 @@
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:alpha="0.8" android:alpha="0.8"
android:lineSpacingExtra="6dp" 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:textColor="@color/colorTextDark"
android:textSize="12sp" /> android:textSize="12sp" />
@@ -400,7 +408,7 @@
android:layout_marginLeft="15dp" android:layout_marginLeft="15dp"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
@@ -417,7 +425,7 @@
android:layout_height="15dp" android:layout_height="15dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:alpha="0.85" android:alpha="0.85"
android:src="@mipmap/about" android:src="@mipmap/ic_about"
android:tint="@color/colorTextGray" /> android:tint="@color/colorTextGray" />
<TextView <TextView
@@ -447,7 +455,7 @@
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:elevation="0dp" android:elevation="0dp"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
@@ -476,7 +484,7 @@
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@mipmap/qr_pay" /> android:src="@mipmap/bg_qr_pay" />
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<TextView <TextView
@@ -497,7 +505,7 @@
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:autoLink="web" android:autoLink="web"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:lineSpacingExtra="6dp" android:lineSpacingExtra="6dp"
android:padding="10dp" android:padding="10dp"
android:text="此模块使用 YukiHookAPI 构建。\n点击这里了解更多 https://github.com/fankes/YukiHookAPI" android:text="此模块使用 YukiHookAPI 构建。\n点击这里了解更多 https://github.com/fankes/YukiHookAPI"

View File

@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/permotion_round" android:background="@drawable/bg_permotion_round"
android:baselineAligned="false" android:baselineAligned="false"
android:gravity="center|start" android:gravity="center|start"
android:orientation="horizontal" android:orientation="horizontal"
@@ -28,7 +28,7 @@
android:layout_width="15dp" android:layout_width="15dp"
android:layout_height="15dp" android:layout_height="15dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:src="@mipmap/about" android:src="@mipmap/ic_about"
android:tint="@color/colorTextGray" /> android:tint="@color/colorTextGray" />
<TextView <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 { ext {
appVersionName = "1.51" appVersionName = "1.7"
appVersionCode = 10 appVersionCode = 15
} }
task clean(type: Delete) { task clean(type: Delete) {

View File

@@ -10,7 +10,8 @@ dependencyResolutionManagement {
repositories { repositories {
google() google()
maven { url "https://api.xposed.info/" } 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() mavenCentral()
} }
} }