├── .gitmodules
├── image
├── .gitignore
├── chat01.png
├── main01.png
├── main02.png
├── main03.png
├── main04.png
└── main05.png
├── ColorPicker
├── .gitignore
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── cpv_alpha.png
│ │ ├── drawable-xhdpi
│ │ │ └── cpv_alpha.png
│ │ ├── drawable-xxhdpi
│ │ │ └── cpv_alpha.png
│ │ ├── values
│ │ │ ├── ids.xml
│ │ │ ├── dimen.xml
│ │ │ ├── styles.xml
│ │ │ ├── strings.xml
│ │ │ └── attrs.xml
│ │ ├── drawable
│ │ │ ├── cpv_ic_arrow_right_black_24dp.xml
│ │ │ ├── cpv_preset_checked.xml
│ │ │ ├── cpv_btn_background_pressed.xml
│ │ │ └── cpv_btn_background.xml
│ │ └── layout
│ │ │ ├── cpv_preference_circle.xml
│ │ │ ├── cpv_preference_square.xml
│ │ │ ├── cpv_preference_circle_large.xml
│ │ │ ├── cpv_preference_square_large.xml
│ │ │ ├── cpv_color_item_circle.xml
│ │ │ ├── cpv_color_item_square.xml
│ │ │ ├── cpv_dialog_presets.xml
│ │ │ └── cpv_dialog_color_picker.xml
│ │ └── java
│ │ └── com
│ │ └── jaredrummler
│ │ └── android
│ │ └── colorpicker
│ │ ├── ColorShape.java
│ │ ├── DrawingUtils.java
│ │ ├── NestedGridView.java
│ │ ├── ColorPickerDialogListener.java
│ │ ├── AlphaPatternDrawable.java
│ │ └── ColorPaletteAdapter.java
├── build.gradle
├── proguard-rules.pro
└── gradle.properties
├── app
├── .gitignore
├── src
│ └── main
│ │ ├── assets
│ │ ├── xposed_init
│ │ ├── icon
│ │ │ ├── ic_add.png
│ │ │ ├── ic_chat.png
│ │ │ ├── ic_money.png
│ │ │ ├── ic_scan.png
│ │ │ ├── tab_icon0.png
│ │ │ ├── tab_icon1.png
│ │ │ ├── tab_icon2.png
│ │ │ ├── tab_icon3.png
│ │ │ ├── bubble_left.9.png
│ │ │ ├── ic_person_add.png
│ │ │ └── bubble_right.9.png
│ │ └── config
│ │ │ └── view
│ │ │ ├── floatbutton_readme.txt
│ │ │ └── floatbutton.txt
│ │ ├── res
│ │ ├── drawable-xxhdpi
│ │ │ ├── ic_add.png
│ │ │ ├── ic_clear.png
│ │ │ ├── ic_done.png
│ │ │ └── ic_arrow_back.png
│ │ ├── mipmap-xhdpi
│ │ │ └── mdwechat_icon.png
│ │ ├── values
│ │ │ ├── styles.xml
│ │ │ ├── dimen.xml
│ │ │ ├── arrays.xml
│ │ │ └── colors.xml
│ │ ├── values-en
│ │ │ └── strings.xml
│ │ └── layout
│ │ │ ├── item_wechat_config.xml
│ │ │ ├── activity_mark_down.xml
│ │ │ ├── activity_settings.xml
│ │ │ └── view_floatbutton.xml
│ │ ├── java
│ │ └── com
│ │ │ └── blanke
│ │ │ └── mdwechat
│ │ │ ├── auto_search
│ │ │ ├── bean
│ │ │ │ ├── LogEvent.kt
│ │ │ │ └── OutputJson.kt
│ │ │ ├── WechatGlobal.kt
│ │ │ ├── Logs.kt
│ │ │ ├── Fields.kt
│ │ │ └── Methods.kt
│ │ │ ├── settings
│ │ │ ├── bean
│ │ │ │ └── WechatConfig.kt
│ │ │ ├── api
│ │ │ │ └── APIManager.kt
│ │ │ ├── view
│ │ │ │ └── DownloadWechatDialog.kt
│ │ │ └── SettingsActivity.kt
│ │ │ ├── hookers
│ │ │ ├── base
│ │ │ │ ├── Hooker.kt
│ │ │ │ └── HookerProvider.kt
│ │ │ ├── DebugHooker.kt
│ │ │ ├── SchemeHooker.kt
│ │ │ ├── DiscoverHooker.kt
│ │ │ ├── AvatarHooker.kt
│ │ │ ├── main
│ │ │ │ └── HomeActionBarHook.kt
│ │ │ ├── LogHooker.kt
│ │ │ ├── ActionBarHooker.kt
│ │ │ ├── SettingsHooker.kt
│ │ │ └── StatusBarHooker.kt
│ │ │ ├── bean
│ │ │ ├── ViewTreeItem.kt
│ │ │ └── FloatButtonConfig.kt
│ │ │ ├── util
│ │ │ ├── VXPUtils.kt
│ │ │ ├── ColorUtils.java
│ │ │ ├── ConvertUtils.java
│ │ │ ├── ViewTreeUtils.kt
│ │ │ ├── KtUtils.kt
│ │ │ ├── NightModeUtils.kt
│ │ │ ├── ViewUtils.kt
│ │ │ ├── DrawableUtils.java
│ │ │ ├── ImageHelper.java
│ │ │ ├── FileUtils.kt
│ │ │ └── LogUtil.kt
│ │ │ ├── Objects.kt
│ │ │ ├── Version.kt
│ │ │ ├── CC.java
│ │ │ ├── WechatGlobal.kt
│ │ │ ├── widget
│ │ │ └── CircleImageView.kt
│ │ │ ├── Common.kt
│ │ │ ├── markdown
│ │ │ └── MarkDownActivity.kt
│ │ │ ├── WechatHook.kt
│ │ │ ├── config
│ │ │ ├── AppCustomConfig.kt
│ │ │ └── WxVersionConfig.kt
│ │ │ ├── Fields.kt
│ │ │ ├── Methods.kt
│ │ │ └── WeChatHelper.kt
│ │ └── AndroidManifest.xml
├── proguard-rules.pro
└── build.gradle
├── fab-lib
├── .gitignore
├── gradle.properties
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── res
│ │ ├── values
│ │ │ ├── ids.xml
│ │ │ ├── dimens.xml
│ │ │ └── attrs.xml
│ │ └── anim
│ │ │ ├── fab_scale_up.xml
│ │ │ ├── fab_scale_down.xml
│ │ │ ├── fab_slide_in_from_left.xml
│ │ │ ├── fab_slide_in_from_right.xml
│ │ │ ├── fab_slide_out_to_left.xml
│ │ │ └── fab_slide_out_to_right.xml
│ │ └── java
│ │ └── com
│ │ └── github
│ │ └── clans
│ │ └── fab
│ │ └── Util.java
├── build.gradle
└── proguard-rules.pro
├── tablayout-lib
├── .gitignore
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── flyco
│ │ │ └── tablayout
│ │ │ ├── listener
│ │ │ ├── OnTabSelectListener.java
│ │ │ └── CustomTabEntity.java
│ │ │ ├── utils
│ │ │ ├── FragmentChangeManager.java
│ │ │ └── UnreadMsgUtils.java
│ │ │ └── widget
│ │ │ └── MsgView.java
│ │ └── res
│ │ ├── drawable
│ │ └── shape_unread.xml
│ │ └── layout
│ │ ├── layout_tab_left.xml
│ │ ├── layout_tab_right.xml
│ │ ├── layout_tab_bottom.xml
│ │ ├── layout_tab.xml
│ │ ├── layout_tab_top.xml
│ │ └── layout_tab_segment.xml
├── build.gradle
└── proguard-rules.pro
├── settings.gradle
├── .github
└── ISSUE_TEMPLATE
│ ├── -------.md
│ └── bug---.md
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── data
├── help
│ ├── join_group.md
│ ├── bubble.md
│ ├── icon.md
│ └── float_button.md
└── config
│ └── wechat
│ ├── data.json
│ ├── 6.6.6
│ └── 6.6.6.config
│ ├── 6.7.2
│ └── 6.7.2.config
│ ├── 6.7.3
│ └── 6.7.3.config
│ ├── 6.7.3-play
│ └── 6.7.3.config
│ ├── 7.0.0
│ └── 7.0.0.config
│ ├── 7.0.3
│ └── 7.0.3.config
│ ├── 7.0.4
│ └── 7.0.4.config
│ ├── 6.7.2-play
│ └── 6.7.2.config
│ └── 6.6.7-play
│ └── 6.6.7.config
├── .gitignore
├── gradle.properties
├── README.md
└── gradlew.bat
/.gitmodules:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/image/.gitignore:
--------------------------------------------------------------------------------
1 | *.png
2 |
--------------------------------------------------------------------------------
/ColorPicker/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /.idea
--------------------------------------------------------------------------------
/fab-lib/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/tablayout-lib/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/src/main/assets/xposed_init:
--------------------------------------------------------------------------------
1 | com.blanke.mdwechat.WechatHook
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app',':fab-lib',':tablayout-lib',':ColorPicker'
2 |
--------------------------------------------------------------------------------
/image/chat01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/image/chat01.png
--------------------------------------------------------------------------------
/image/main01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/image/main01.png
--------------------------------------------------------------------------------
/image/main02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/image/main02.png
--------------------------------------------------------------------------------
/image/main03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/image/main03.png
--------------------------------------------------------------------------------
/image/main04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/image/main04.png
--------------------------------------------------------------------------------
/image/main05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/image/main05.png
--------------------------------------------------------------------------------
/ColorPicker/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/-------.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 功能建议或其他
3 | about: 提交 bug 请不要选择该模板
4 |
5 | ---
6 |
7 |
8 |
--------------------------------------------------------------------------------
/fab-lib/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=Floating Action Button Library
2 | POM_ARTIFACT_ID=fab
3 | POM_PACKAGING=aar
--------------------------------------------------------------------------------
/tablayout-lib/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/assets/icon/ic_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/ic_add.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/assets/icon/ic_chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/ic_chat.png
--------------------------------------------------------------------------------
/app/src/main/assets/icon/ic_money.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/ic_money.png
--------------------------------------------------------------------------------
/app/src/main/assets/icon/ic_scan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/ic_scan.png
--------------------------------------------------------------------------------
/data/help/join_group.md:
--------------------------------------------------------------------------------
1 | - MDWechat 交流群(QQ群:674478488)
2 | - 微信群(添加微信 CSYJZF,回复 MDWechat)
3 | - MDWechat 内测群(QQ群:661865449)
4 |
--------------------------------------------------------------------------------
/app/src/main/assets/icon/tab_icon0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/tab_icon0.png
--------------------------------------------------------------------------------
/app/src/main/assets/icon/tab_icon1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/tab_icon1.png
--------------------------------------------------------------------------------
/app/src/main/assets/icon/tab_icon2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/tab_icon2.png
--------------------------------------------------------------------------------
/app/src/main/assets/icon/tab_icon3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/tab_icon3.png
--------------------------------------------------------------------------------
/fab-lib/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/icon/bubble_left.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/bubble_left.9.png
--------------------------------------------------------------------------------
/app/src/main/assets/icon/ic_person_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/ic_person_add.png
--------------------------------------------------------------------------------
/app/src/main/assets/icon/bubble_right.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/assets/icon/bubble_right.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/res/drawable-xxhdpi/ic_add.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/res/drawable-xxhdpi/ic_clear.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/res/drawable-xxhdpi/ic_done.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/mdwechat_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/res/mipmap-xhdpi/mdwechat_icon.png
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/auto_search/bean/LogEvent.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.auto_search.bean
2 |
3 | class LogEvent(val msg: String)
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_arrow_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/app/src/main/res/drawable-xxhdpi/ic_arrow_back.png
--------------------------------------------------------------------------------
/fab-lib/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/drawable-hdpi/cpv_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/ColorPicker/src/main/res/drawable-hdpi/cpv_alpha.png
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/drawable-xhdpi/cpv_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/ColorPicker/src/main/res/drawable-xhdpi/cpv_alpha.png
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/drawable-xxhdpi/cpv_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Blankeer/MDWechat/HEAD/ColorPicker/src/main/res/drawable-xxhdpi/cpv_alpha.png
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/settings/bean/WechatConfig.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.settings.bean
2 |
3 | class WechatConfig(val name: String, val desc: String, val url: String)
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/hookers/base/Hooker.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.hookers.base
2 |
3 | data class Hooker(val hook: () -> Unit) {
4 | @Volatile var hasHooked = false
5 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | /.idea
11 | /app/release
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/bean/ViewTreeItem.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.bean
2 |
3 | class ViewTreeItem(
4 | val clazz: String,
5 | val children: Array = arrayOf()
6 | )
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/auto_search/bean/OutputJson.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.auto_search.bean
2 |
3 | class OutputJson(val classes: Map, val methods: Map, val fields: Map)
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/util/VXPUtils.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.util
2 |
3 |
4 | object VXPUtils {
5 | fun isVXPEnv(): Boolean {
6 | return System.getProperty("vxp") != null
7 | }
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 12sp
4 | 2dp
5 | 48dp
6 |
--------------------------------------------------------------------------------
/data/help/bubble.md:
--------------------------------------------------------------------------------
1 | # 气泡教程
2 |
3 | ## 路径
4 | - 左气泡:`/sdcard/mdwechat/icon/bubble_left.9.png`
5 | - 右气泡:`/sdcard/mdwechat/icon/bubble_right.9.png`
6 |
7 | ## 说明
8 | - 替换掉上述文件即可修改。
9 | - 需要.9格式。
10 | - 不会制作的可以使用[碘酒编辑器]、[9 Patch Editor]等
--------------------------------------------------------------------------------
/tablayout-lib/src/main/java/com/flyco/tablayout/listener/OnTabSelectListener.java:
--------------------------------------------------------------------------------
1 | package com.flyco.tablayout.listener;
2 |
3 | public interface OnTabSelectListener {
4 | void onTabSelect(int position);
5 | void onTabReselect(int position);
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/hookers/base/HookerProvider.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.hookers.base
2 |
3 | interface HookerProvider {
4 | fun provideStaticHookers(): List? = null
5 | fun provideEventHooker(event: String): Hooker? = null
6 | }
--------------------------------------------------------------------------------
/fab-lib/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 56dp
5 | 45dp
6 | 14sp
7 |
8 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Jul 29 21:48:54 CST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-en/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Scan QR Code
3 | Money
4 | Group Chat
5 | Add Contacts
6 |
7 |
--------------------------------------------------------------------------------
/ColorPicker/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 23
5 | resourcePrefix "cpv_"
6 |
7 | defaultConfig {
8 | minSdkVersion 14
9 | targetSdkVersion 23
10 | }
11 | }
12 |
13 | dependencies {
14 | implementation 'com.android.support:support-v4:23.0.0'
15 | }
16 |
--------------------------------------------------------------------------------
/tablayout-lib/src/main/res/drawable/shape_unread.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/auto_search/WechatGlobal.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.auto_search
2 |
3 | import com.blanke.mdwechat.Version
4 |
5 |
6 | object WechatGlobal {
7 | var wxPackageName: String = ""
8 | var wxVersion: Version? = null
9 | lateinit var wxLoader: ClassLoader
10 | lateinit var wxClasses: List
11 |
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/auto_search/Logs.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.auto_search
2 |
3 | import com.blanke.mdwechat.auto_search.bean.LogEvent
4 | import com.blankj.utilcode.util.LogUtils
5 | import org.greenrobot.eventbus.EventBus
6 |
7 | object Logs {
8 | fun i(msg: String) {
9 | EventBus.getDefault().post(LogEvent(msg))
10 | LogUtils.i(msg)
11 | }
12 | }
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/drawable/cpv_ic_arrow_right_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/drawable/cpv_preset_checked.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/bean/FloatButtonConfig.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.bean
2 |
3 | /**
4 | * Created by blanke on 2017/10/13.
5 | */
6 |
7 | data class FloatButtonConfig(var info: String = "", var menu: FLoatButtonConfigItem?, var items: Array?)
8 |
9 | data class FLoatButtonConfigItem(var order: Int = 0, var type: String = "", var icon: String = "", var text: String = "")
10 |
--------------------------------------------------------------------------------
/fab-lib/src/main/res/anim/fab_scale_up.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug---.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug 反馈
3 | about: 提交 bug 的 issue 模板
4 |
5 | ---
6 |
7 | 请按以下步骤填写,不规范的 issue 会被关闭
8 | **bug 描述**
9 | 请描述你遇到的问题
10 |
11 | **环境**
12 | 1. Android 版本
13 | 2. 机型
14 | 3. MDWechat 版本
15 | 4. Xposed 环境及版本
16 | 5. 微信版本
17 |
18 | **复现步骤**
19 | 1. 进入主界面
20 | 2. 点击 xxx
21 | 3. 出现 xxx 现象
22 |
23 | **期望**
24 | 描述期望的结果
25 |
26 | **截图**
27 | 截图
28 |
29 | **日志(可选)**
30 | 日志
31 |
32 | **其他说明**
33 |
--------------------------------------------------------------------------------
/fab-lib/src/main/res/anim/fab_scale_down.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/drawable/cpv_btn_background_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/layout/cpv_preference_circle.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/layout/cpv_preference_square.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/layout/cpv_preference_circle_large.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/layout/cpv_preference_square_large.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/fab-lib/src/main/res/anim/fab_slide_in_from_left.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
12 |
--------------------------------------------------------------------------------
/fab-lib/src/main/res/anim/fab_slide_in_from_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/util/ColorUtils.java:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.util;
2 |
3 | import android.graphics.Color;
4 |
5 | /**
6 | * Created by blanke on 2017/10/5.
7 | */
8 |
9 | public class ColorUtils {
10 | public static int getDarkerColor(int color, float factor) {
11 | float[] hsv = new float[3];
12 | Color.colorToHSV(color, hsv);
13 | hsv[2] = hsv[2] * factor;
14 | return Color.HSVToColor(hsv);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fab-lib/src/main/res/anim/fab_slide_out_to_left.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
12 |
--------------------------------------------------------------------------------
/fab-lib/src/main/res/anim/fab_slide_out_to_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
12 |
--------------------------------------------------------------------------------
/app/src/main/assets/config/view/floatbutton_readme.txt:
--------------------------------------------------------------------------------
1 | 小程序:com.tencent.mm.plugin.appbrand.ui.AppBrandLauncherUI
2 | 朋友圈:com.tencent.mm.plugin.sns.ui.SnsTimeLineUI
3 | 扫一扫:com.tencent.mm.plugin.scanner.ui.BaseScanUI
4 | 收付款:com.tencent.mm.plugin.offline.ui.WalletOfflineCoinPurseUI
5 | 钱包:com.tencent.mm.plugin.mall.ui.MallIndexUI
6 | 收藏:com.tencent.mm.plugin.fav.ui.FavoriteIndexUI
7 | 群聊:com.tencent.mm.ui.contact.SelectContactUI
8 | 添加好友:com.tencent.mm.plugin.subapp.ui.pluginapp.AddMoreFriendsUI
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/drawable/cpv_btn_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/values/dimen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 6dp
4 | 66dp
5 | 34dp
6 | 58dp
7 | 50dp
8 | 8dp
9 | 28dp
10 | 40dp
11 |
12 |
--------------------------------------------------------------------------------
/fab-lib/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 23
5 |
6 | defaultConfig {
7 | minSdkVersion 21
8 | targetSdkVersion 23
9 | versionCode 1
10 | versionName '1.0'
11 | }
12 | buildTypes {
13 | release {
14 | minifyEnabled false
15 | debuggable false
16 | }
17 |
18 | debug {
19 | minifyEnabled false
20 | debuggable true
21 | }
22 | }
23 | }
24 |
25 | dependencies {
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/tablayout-lib/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | version = "2.1.2"
3 | android {
4 | compileSdkVersion 23
5 |
6 | defaultConfig {
7 | minSdkVersion 21
8 | targetSdkVersion 23
9 | versionCode 212
10 | versionName version
11 | }
12 | buildTypes {
13 | release {
14 | minifyEnabled false
15 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
16 | }
17 | }
18 | }
19 |
20 | dependencies {
21 | implementation 'com.android.support:support-v4:23.0.0'
22 | }
23 |
--------------------------------------------------------------------------------
/data/help/icon.md:
--------------------------------------------------------------------------------
1 | # 图标替换教程
2 | ## 路径
3 | `/sdcard/mdwechat/icon/`
4 | ## 文件列表
5 | 文件名 | 含义
6 | ---- | ---
7 | bubble_left.9.png | 聊天气泡(左)
8 | bubble_right.9.png| 聊天气泡(右)
9 | tab_bg0.png| 主界面聊天页面背景图
10 | tab_bg1.png| 主界面联系人页面背景图
11 | tab_bg2.png| 主界面发现页面背景图
12 | tab_bg3.png| 主界面设置页面背景图
13 | tab_icon0.png| 主界面聊天页面 tab icon图
14 | tab_icon1.png| 主界面联系人页面 tab icon图
15 | tab_icon2.png| 主界面发现页面 tab icon图
16 | tab_icon3.png| 主界面设置页面 tab icon图
17 | 其余文件| 悬浮按钮 icon 图
18 | ## 修改方法
19 | 在文件管理器中替换掉上述对应文件即可
20 | ## 参考
21 | ### icon 下载网站参考
22 | - [https://material.io/tools/icons/?style=baseline](https://material.io/tools/icons/?style=baseline)
23 | - [http://www.iconfont.cn/](http://www.iconfont.cn/)
--------------------------------------------------------------------------------
/fab-lib/src/main/java/com/github/clans/fab/Util.java:
--------------------------------------------------------------------------------
1 | package com.github.clans.fab;
2 |
3 | import android.content.Context;
4 | import android.os.Build;
5 |
6 | final class Util {
7 |
8 | private Util() {
9 | }
10 |
11 | static int dpToPx(Context context, float dp) {
12 | final float scale = context.getResources().getDisplayMetrics().density;
13 | return Math.round(dp * scale);
14 | }
15 |
16 | static boolean hasJellyBean() {
17 | return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
18 | }
19 |
20 | static boolean hasLollipop() {
21 | return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_wechat_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
19 |
--------------------------------------------------------------------------------
/fab-lib/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:/android-sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/ColorPicker/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in C:\android-sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/tablayout-lib/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/lihui/work/AndroidStudio/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/util/ConvertUtils.java:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.util;
2 |
3 | import android.content.Context;
4 |
5 | public class ConvertUtils {
6 | /**
7 | * dp转px * * @param dpValue dp值 * @return px值
8 | */
9 | public static int dp2px(Context context, float dpValue) {
10 | final float scale = context.getApplicationContext().getResources().getDisplayMetrics().density;
11 | return (int) (dpValue * scale + 0.5f);
12 | }
13 |
14 | /**
15 | * px转dp * * @param pxValue px值 * @return dp值
16 | */
17 | public static int px2dp(Context context, float pxValue) {
18 | final float scale = context.getApplicationContext().getResources().getDisplayMetrics().density;
19 | return (int) (pxValue / scale + 0.5f);
20 | }
21 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | #org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_mark_down.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
20 |
--------------------------------------------------------------------------------
/app/src/main/assets/config/view/floatbutton.txt:
--------------------------------------------------------------------------------
1 | {
2 | "info": "自定义悬浮按钮",
3 | "menu": {
4 | "icon": "ic_add.png"
5 | },
6 | "items": [
7 | {
8 | "order": 1,
9 | "type": "com.tencent.mm.plugin.offline.ui.WalletOfflineCoinPurseUI",
10 | "text": "收付款",
11 | "icon": "ic_money.png"
12 | },
13 | {
14 | "order": 2,
15 | "type": "com.tencent.mm.plugin.scanner.ui.BaseScanUI",
16 | "text": "扫一扫",
17 | "icon": "ic_scan.png"
18 | },
19 | {
20 | "order": 3,
21 | "type": "com.tencent.mm.ui.contact.SelectContactUI",
22 | "text": "群聊",
23 | "icon": "ic_chat.png"
24 | },
25 | {
26 | "order": 4,
27 | "type": "com.tencent.mm.plugin.subapp.ui.pluginapp.AddMoreFriendsUI",
28 | "text": "添加好友",
29 | "icon": "ic_person_add.png"
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/ColorPicker/gradle.properties:
--------------------------------------------------------------------------------
1 | VERSION_NAME=1.0.0
2 | VERSION_CODE=100
3 | GROUP=com.jaredrummler
4 | ARTIFACT_ID=colorpicker
5 |
6 | POM_NAME=colorpicker
7 | POM_ARTIFACT_ID=colorpicker
8 | POM_PACKAGING=aar
9 |
10 | POM_DESCRIPTION=A simple good looking color picker component for Android
11 | POM_URL=https://github.com/jaredrummler/ColorPicker
12 | POM_SCM_URL=https://github.com/jaredrummler/ColorPicker
13 | POM_SCM_CONNECTION=scm:git@github.com:jaredrummler/ColorPicker.git
14 | POM_SCM_DEV_CONNECTION=scm:git@github.com:jaredrummler/ColorPicker.git
15 | POM_LICENCE_NAME=The Apache Software License, Version 2.0
16 | POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
17 | POM_LICENCE_DIST=repo
18 | POM_DEVELOPER_ID=jaredrummler
19 | POM_DEVELOPER_NAME=Jared Rummler
20 |
21 | SNAPSHOT_REPOSITORY_URL=https://oss.sonatype.org/content/repositories/snapshots
22 | RELEASE_REPOSITORY_URL=https://oss.sonatype.org/service/local/staging/deploy/maven2
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/layout/cpv_color_item_circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
23 |
24 |
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/layout/cpv_color_item_square.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
23 |
24 |
--------------------------------------------------------------------------------
/tablayout-lib/src/main/java/com/flyco/tablayout/listener/CustomTabEntity.java:
--------------------------------------------------------------------------------
1 | package com.flyco.tablayout.listener;
2 |
3 | import android.graphics.drawable.Drawable;
4 | import android.support.annotation.DrawableRes;
5 |
6 | public interface CustomTabEntity {
7 | String getTabTitle();
8 |
9 | @DrawableRes
10 | int getTabSelectedIcon();
11 |
12 | @DrawableRes
13 | int getTabUnselectedIcon();
14 |
15 | Drawable getTabIcon();
16 |
17 |
18 | class TabCustomData implements CustomTabEntity {
19 |
20 | @Override
21 | public String getTabTitle() {
22 | return null;
23 | }
24 |
25 | @Override
26 | public int getTabSelectedIcon() {
27 | return 0;
28 | }
29 |
30 | @Override
31 | public int getTabUnselectedIcon() {
32 | return 0;
33 | }
34 |
35 | @Override
36 | public Drawable getTabIcon() {
37 | return null;
38 | }
39 | }
40 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/settings/api/APIManager.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat.settings.api
2 |
3 | import okhttp3.Callback
4 | import okhttp3.OkHttpClient
5 | import okhttp3.Request
6 |
7 | class APIManager {
8 | private val host = "https://raw.githubusercontent.com/Blankeer/MDWechat/v3.0/"
9 |
10 | private val client: OkHttpClient by lazy {
11 | OkHttpClient.Builder().build()
12 | }
13 |
14 | fun getWechatConfigs(callback: Callback) {
15 | val req = Request.Builder().url("${host}data/config/wechat/data.json")
16 | .get()
17 | .build()
18 | client.newCall(req).enqueue(callback)
19 | }
20 |
21 | fun downloadWechatConfig(url: String, callback: Callback) {
22 | get(url, callback)
23 | }
24 |
25 | fun get(url: String, callback: Callback) {
26 | val req = Request.Builder().url(url)
27 | .get()
28 | .build()
29 | client.newCall(req).enqueue(callback)
30 | }
31 | }
--------------------------------------------------------------------------------
/ColorPicker/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/blanke/mdwechat/Objects.kt:
--------------------------------------------------------------------------------
1 | package com.blanke.mdwechat
2 |
3 | import android.app.Activity
4 | import android.view.MenuItem
5 | import android.view.View
6 | import com.flyco.tablayout.CommonTabLayout
7 | import java.lang.ref.WeakReference
8 |
9 | object Objects {
10 | object Main {
11 | var LauncherUI = WeakReference(null)
12 | var LauncherUI_mViewPager = WeakReference(null)
13 | var LauncherUI_mTabLayout = WeakReference(null)
14 | var HomeUI_mActionBar = WeakReference(null)
15 | var LauncherUI_mWechatXMenuItem = WeakReference