Commit a03732f8 authored by Administrator's avatar Administrator

部分适配工作

parent 2dba5670
...@@ -24,7 +24,6 @@ android { ...@@ -24,7 +24,6 @@ android {
targetSdkVersion 27 targetSdkVersion 27
versionCode 7 versionCode 7
versionName "1.1.5" versionName "1.1.5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk { ndk {
abiFilters "armeabi-v7a"//, "arm64-v8a", "x86","arm64-v8a","x86_64" abiFilters "armeabi-v7a"//, "arm64-v8a", "x86","arm64-v8a","x86_64"
} }
...@@ -44,11 +43,6 @@ android { ...@@ -44,11 +43,6 @@ android {
buildTypes { buildTypes {
release { release {
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${project.name}_${variant.flavorName}_v${variant.versionName}.apk"
}
}
minifyEnabled true minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release signingConfig signingConfigs.release
...@@ -59,20 +53,6 @@ android { ...@@ -59,20 +53,6 @@ android {
} }
} }
flavorDimensions "default"
productFlavors {
all { flavor ->
resValue 'string', 'flavor', flavor.name
}
demo {
// 测试渠道
}
plugin {
// 正式发布渠道
dimension "default"
}
}
sourceSets { sourceSets {
main { main {
...@@ -87,7 +67,7 @@ dependencies { ...@@ -87,7 +67,7 @@ dependencies {
implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.github.sky-wei:xposed-common:1.0.5' implementation 'com.github.sky-wei:xposed-common:1.0.5'
implementation 'com.github.sky-wei:xposed-javax:1.1.6' implementation 'com.github.sky-wei:xposed-javax:1.1.6'
compileOnly 'de.robv.android.xposed:api:82' compileOnly 'com.virjar:ratel-api:1.1.0'
compileOnly 'com.rover12421.AndroidHideApi:android:1.17' compileOnly 'com.rover12421.AndroidHideApi:android:1.17'
demoImplementation 'org.apache.commons:commons-lang3:3.7' compileOnly 'org.apache.commons:commons-lang3:3.7'
} }
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sky.xposed.rimet"> package="com.sky.xposed.rimet">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<application <application
android:name=".App"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:name=".App"> android:allowBackup="true">
<activity android:name=".ui.activity.MainActivity"> <activity android:name=".ui.activity.MainActivity">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
<category android:name="de.robv.android.xposed.category.MODULE_SETTINGS" /> <category android:name="de.robv.android.xposed.category.MODULE_SETTINGS" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".ui.activity.MapActivity" <activity
android:name=".ui.activity.MapActivity"
android:label="选择位置"> android:label="选择位置">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
...@@ -35,21 +38,24 @@ ...@@ -35,21 +38,24 @@
<meta-data <meta-data
android:name="com.amap.api.v2.apikey" android:name="com.amap.api.v2.apikey"
android:value="949931e653928fc485a30726ed6d7063"/> android:value="949931e653928fc485a30726ed6d7063" />
<service android:name="com.amap.api.location.APSService" />
<meta-data <meta-data
android:name="xposedmodule" android:name="xposedmodule"
android:value="true"/> android:value="true" />
<meta-data <meta-data
android:name="xposeddescription" android:name="xposeddescription"
android:value="钉钉工具"/> android:value="钉钉工具" />
<meta-data <meta-data
android:name="for_ratel_apps"
android:value="com.alibaba.android.rimet" />
<meta-data
android:name="xposedminversion" android:name="xposedminversion"
android:value="54"/> android:value="54" />
<service android:name="com.amap.api.location.APSService" />
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.sky.xposed.rimet; package com.sky.xposed.rimet;
import android.app.Activity;
import android.app.ActivityThread; import android.app.ActivityThread;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
...@@ -33,6 +34,8 @@ import com.sky.xposed.rimet.plugin.interfaces.XPluginManager; ...@@ -33,6 +34,8 @@ import com.sky.xposed.rimet.plugin.interfaces.XPluginManager;
import com.sky.xposed.rimet.plugin.interfaces.XVersionManager; import com.sky.xposed.rimet.plugin.interfaces.XVersionManager;
import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage; import de.robv.android.xposed.callbacks.XC_LoadPackage;
/** /**
...@@ -50,6 +53,7 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac ...@@ -50,6 +53,7 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac
final String packageName = lpParam.packageName; final String packageName = lpParam.packageName;
Alog.setDebug(true);
if (!Constant.Rimet.PACKAGE_NAME.equals(packageName)) return; if (!Constant.Rimet.PACKAGE_NAME.equals(packageName)) return;
// 获取版本管理对象 // 获取版本管理对象
...@@ -67,19 +71,20 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac ...@@ -67,19 +71,20 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac
// 获取支持的版本配置 // 获取支持的版本配置
XConfig config = versionManager.getSupportConfig(); XConfig config = versionManager.getSupportConfig();
Alog.i("begin of hook application");
XposedUtil XposedUtil
.findMethod( .findMethod(
config.get(M.classz.class_dingtalkbase_multidexsupport_DDApplication), config.get(M.classz.class_dingtalkbase_multidexsupport_DDApplication),
config.get(M.method.method_dingtalkbase_multidexsupport_DDApplication_onCreate)) config.get(M.method.method_dingtalkbase_multidexsupport_DDApplication_onCreate))
.before(param -> { .before(param -> {
Alog.i("enter :" + param.method);
Application application = (Application) param.thisObject; Application application = (Application) param.thisObject;
Context context = application.getApplicationContext(); Context context = application.getApplicationContext();
if (TextUtils.equals( if (TextUtils.equals(
config.get(M.classz.class_rimet_LauncherApplication), config.get(M.classz.class_rimet_LauncherApplication),
application.getClass().getName())) { application.getClass().getName())) {
Alog.i("enter pluginManager");
XPluginManager pluginManager = new PluginManager XPluginManager pluginManager = new PluginManager
.Build(context) .Build(context)
.setLoadPackageParam(lpParam) .setLoadPackageParam(lpParam)
...@@ -90,5 +95,12 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac ...@@ -90,5 +95,12 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac
pluginManager.handleLoadPackage(); pluginManager.handleLoadPackage();
} }
}); });
XposedHelpers.findAndHookMethod(Activity.class, "onResume", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
Alog.i("enter activity:" + param.thisObject.getClass().getName());
}
});
} }
} }
...@@ -52,6 +52,8 @@ public final class M { ...@@ -52,6 +52,8 @@ public final class M {
public static final int class_android_user_settings_activity_NewSettingActivity = 0x1f00000C; public static final int class_android_user_settings_activity_NewSettingActivity = 0x1f00000C;
public static final int class_wukong_im_base_IMDatabase = 0x1f00000D; public static final int class_wukong_im_base_IMDatabase = 0x1f00000D;
public static final int class_android_user_settings_activity_UserSettingsActivity = 0x1f00000E;
} }
public static final class method { public static final class method {
...@@ -91,6 +93,8 @@ public final class M { ...@@ -91,6 +93,8 @@ public final class M {
public static final int method_wukong_im_message_MessageContentImpl_TextContentImpl_text = 0x2f000011; public static final int method_wukong_im_message_MessageContentImpl_TextContentImpl_text = 0x2f000011;
public static final int method_wukong_im_message_MessageContentImpl_TextContentImpl_setText = 0x2f000012; public static final int method_wukong_im_message_MessageContentImpl_TextContentImpl_setText = 0x2f000012;
public static final int method_android_user_settings_activity_UserSettingsActivity_onCreate = 0x2f00000C;
} }
public static final class field { public static final class field {
......
...@@ -26,6 +26,7 @@ import com.sky.xposed.rimet.data.config.RimetConfig4617; ...@@ -26,6 +26,7 @@ import com.sky.xposed.rimet.data.config.RimetConfig4617;
import com.sky.xposed.rimet.data.config.RimetConfig4618; import com.sky.xposed.rimet.data.config.RimetConfig4618;
import com.sky.xposed.rimet.data.config.RimetConfig4621; import com.sky.xposed.rimet.data.config.RimetConfig4621;
import com.sky.xposed.rimet.data.config.RimetConfig4625; import com.sky.xposed.rimet.data.config.RimetConfig4625;
import com.sky.xposed.rimet.data.config.RimetConfig4731;
import com.sky.xposed.rimet.plugin.interfaces.XConfig; import com.sky.xposed.rimet.plugin.interfaces.XConfig;
import com.sky.xposed.rimet.plugin.interfaces.XVersionManager; import com.sky.xposed.rimet.plugin.interfaces.XVersionManager;
...@@ -37,7 +38,7 @@ import java.util.Map; ...@@ -37,7 +38,7 @@ import java.util.Map;
/** /**
* Created by sky on 2018/9/24. * Created by sky on 2018/9/24.
* * <p>
* Hook应用相关版本变量管理类 * Hook应用相关版本变量管理类
*/ */
public class VersionManager implements XVersionManager { public class VersionManager implements XVersionManager {
...@@ -51,6 +52,7 @@ public class VersionManager implements XVersionManager { ...@@ -51,6 +52,7 @@ public class VersionManager implements XVersionManager {
CONFIG_MAP.put("4.6.20", RimetConfig4618.class); CONFIG_MAP.put("4.6.20", RimetConfig4618.class);
CONFIG_MAP.put("4.6.21", RimetConfig4621.class); CONFIG_MAP.put("4.6.21", RimetConfig4621.class);
CONFIG_MAP.put("4.6.25", RimetConfig4625.class); CONFIG_MAP.put("4.6.25", RimetConfig4625.class);
CONFIG_MAP.put("4.7.31", RimetConfig4731.class);
} }
private XConfig mVersionConfig; private XConfig mVersionConfig;
...@@ -71,6 +73,7 @@ public class VersionManager implements XVersionManager { ...@@ -71,6 +73,7 @@ public class VersionManager implements XVersionManager {
/** /**
* 获取当前版本名 * 获取当前版本名
*
* @return * @return
*/ */
@Override @Override
...@@ -80,6 +83,7 @@ public class VersionManager implements XVersionManager { ...@@ -80,6 +83,7 @@ public class VersionManager implements XVersionManager {
/** /**
* 获取当前版本号 * 获取当前版本号
*
* @return * @return
*/ */
@Override @Override
...@@ -89,6 +93,7 @@ public class VersionManager implements XVersionManager { ...@@ -89,6 +93,7 @@ public class VersionManager implements XVersionManager {
/** /**
* 判断Hook是否支持当前版本 * 判断Hook是否支持当前版本
*
* @return * @return
*/ */
@Override @Override
...@@ -98,6 +103,7 @@ public class VersionManager implements XVersionManager { ...@@ -98,6 +103,7 @@ public class VersionManager implements XVersionManager {
/** /**
* 获取支持版本的配置信息,如果没有适配到返回Null * 获取支持版本的配置信息,如果没有适配到返回Null
*
* @return * @return
*/ */
@Override @Override
...@@ -115,6 +121,7 @@ public class VersionManager implements XVersionManager { ...@@ -115,6 +121,7 @@ public class VersionManager implements XVersionManager {
/** /**
* 判断Hook是否支持当前版本 * 判断Hook是否支持当前版本
*
* @return * @return
*/ */
public boolean isSupportVersion(String versionName) { public boolean isSupportVersion(String versionName) {
...@@ -123,6 +130,7 @@ public class VersionManager implements XVersionManager { ...@@ -123,6 +130,7 @@ public class VersionManager implements XVersionManager {
/** /**
* 创建指定的配置类 * 创建指定的配置类
*
* @param vClass * @param vClass
* @return * @return
*/ */
......
...@@ -21,7 +21,7 @@ import com.sky.xposed.rimet.data.M; ...@@ -21,7 +21,7 @@ import com.sky.xposed.rimet.data.M;
/** /**
* Created by sky on 2019/1/14. * Created by sky on 2019/1/14.
*/ */
public class RimetConfig4625 extends RimetConfig { public class RimetConfig4731 extends RimetConfig {
@Override @Override
public void loadConfig() { public void loadConfig() {
...@@ -29,37 +29,39 @@ public class RimetConfig4625 extends RimetConfig { ...@@ -29,37 +29,39 @@ public class RimetConfig4625 extends RimetConfig {
/** Class */ /** Class */
add(M.classz.class_rimet_LauncherApplication, "com.alibaba.android.rimet.LauncherApplication"); add(M.classz.class_rimet_LauncherApplication, "com.alibaba.android.rimet.LauncherApplication");
add(M.classz.class_dingtalkbase_multidexsupport_DDApplication, "com.alibaba.android.dingtalkbase.multidexsupport.DDApplication"); add(M.classz.class_dingtalkbase_multidexsupport_DDApplication, "com.alibaba.android.dingtalkbase.multidexsupport.DDApplication");
add(M.classz.class_defpackage_MessageDs, "ivh,jbk"); // MessageDs add(M.classz.class_defpackage_MessageDs, "mlb"); // MessageDs
add(M.classz.class_plugin_webwx_ui_ExtDeviceWXLoginUI, "com.tencent.mm.plugin.webwx.ui.ExtDeviceWXLoginUI"); add(M.classz.class_plugin_webwx_ui_ExtDeviceWXLoginUI, "com.tencent.mm.plugin.webwx.ui.ExtDeviceWXLoginUI");
add(M.classz.class_defpackage_ServiceFactory, "jut,kaw"); // ServiceFactory add(M.classz.class_defpackage_ServiceFactory, "nio"); // ServiceFactory
add(M.classz.class_android_dingtalk_redpackets_idl_service_RedEnvelopPickIService, "com.alibaba.android.dingtalk.redpackets.idl.service.RedEnvelopPickIService"); add(M.classz.class_android_dingtalk_redpackets_idl_service_RedEnvelopPickIService, "com.alibaba.android.dingtalk.redpackets.idl.service.RedEnvelopPickIService");
add(M.classz.class_defpackage_RedPacketsRpc, "cfe"); // RedPacketsRpc add(M.classz.class_defpackage_RedPacketsRpc, "ded"); // RedPacketsRpc
add(M.classz.class_defpackage_RedPacketsRpc_9, "cfe$9"); add(M.classz.class_defpackage_RedPacketsRpc_9, "ded$9");
add(M.classz.class_lightapp_runtime_LightAppRuntimeReverseInterfaceImpl, "com.alibaba.lightapp.runtime.LightAppRuntimeReverseInterfaceImpl"); add(M.classz.class_lightapp_runtime_LightAppRuntimeReverseInterfaceImpl, "com.alibaba.lightapp.runtime.LightAppRuntimeReverseInterfaceImpl");
add(M.classz.class_android_dingtalk_redpackets_activities_FestivalRedPacketsPickActivity, "com.alibaba.android.dingtalk.redpackets.activities.FestivalRedPacketsPickActivity"); add(M.classz.class_android_dingtalk_redpackets_activities_FestivalRedPacketsPickActivity, "com.alibaba.android.dingtalk.redpackets.activities.FestivalRedPacketsPickActivity");
add(M.classz.class_android_dingtalk_redpackets_activities_PickRedPacketsActivity, "com.alibaba.android.dingtalk.redpackets.activities.PickRedPacketsActivity"); add(M.classz.class_android_dingtalk_redpackets_activities_PickRedPacketsActivity, "com.alibaba.android.dingtalk.redpackets.activities.PickRedPacketsActivity");
add(M.classz.class_android_user_settings_activity_NewSettingActivity, "com.alibaba.android.user.settings.activity.NewSettingActivity"); add(M.classz.class_android_user_settings_activity_NewSettingActivity, "com.alibaba.android.user.settings.activity.NewSettingActivity");
add(M.classz.class_wukong_im_base_IMDatabase, "com.alibaba.wukong.im.base.IMDatabase"); add(M.classz.class_wukong_im_base_IMDatabase, "com.alibaba.wukong.im.base.IMDatabase");
add(M.classz.class_android_user_settings_activity_UserSettingsActivity, "com.alibaba.android.user.settings.activity.UserSettingsActivity");
/** Method */ /** Method */
add(M.method.method_dingtalkbase_multidexsupport_DDApplication_onCreate, "onCreate"); add(M.method.method_dingtalkbase_multidexsupport_DDApplication_onCreate, "onCreate");
add(M.method.method_defpackage_MessageDs_handler, "a,a"); // INSERT,IGNORE,INSERT_FAIL add(M.method.method_defpackage_MessageDs_handler, "a"); // INSERT,IGNORE,INSERT_FAIL
add(M.method.method_android_dingtalkim_base_model_typeValue, "typeValue"); add(M.method.method_android_dingtalkim_base_model_typeValue, "typeValue");
add(M.method.method_wukong_im_message_MessageImpl_messageContent, "messageContent"); add(M.method.method_wukong_im_message_MessageImpl_messageContent, "messageContent");
add(M.method.method_wukong_im_message_MessageContentImpl_contents, "contents"); add(M.method.method_wukong_im_message_MessageContentImpl_contents, "contents");
add(M.method.method_defpackage_RedPacketsRpc_newInstance, "a"); add(M.method.method_defpackage_RedPacketsRpc_newInstance, "a");
add(M.method.method_defpackage_ServiceFactory_getService, "a,a"); add(M.method.method_defpackage_ServiceFactory_getService, "a");
add(M.method.method_android_dingtalk_redpackets_idl_service_RedEnvelopPickIService_pickRedEnvelopCluster, "pickRedEnvelopCluster"); add(M.method.method_android_dingtalk_redpackets_idl_service_RedEnvelopPickIService_pickRedEnvelopCluster, "pickRedEnvelopCluster");
add(M.method.method_lightapp_runtime_LightAppRuntimeReverseInterfaceImpl_initSecurityGuard, "initSecurityGuard"); add(M.method.method_lightapp_runtime_LightAppRuntimeReverseInterfaceImpl_initSecurityGuard, "initSecurityGuard");
add(M.method.method_android_dingtalk_redpackets_activities_FestivalRedPacketsPickActivity_initView, "a"); add(M.method.method_android_dingtalk_redpackets_activities_FestivalRedPacketsPickActivity_initView, "a");
add(M.method.method_android_dingtalk_redpackets_activities_PickRedPacketsActivity_initView, "a"); add(M.method.method_android_dingtalk_redpackets_activities_PickRedPacketsActivity_initView, "a");
add(M.method.method_android_user_settings_activity_NewSettingActivity_onCreate, "onCreate"); add(M.method.method_android_user_settings_activity_NewSettingActivity_onCreate, "onCreate,onCreate");
add(M.method.method_defpackage_MessageDs_recall, "a,a"); add(M.method.method_defpackage_MessageDs_recall, "a");
add(M.method.method_wukong_im_conversation_ConversationImpl_latestMessage, "latestMessage"); add(M.method.method_wukong_im_conversation_ConversationImpl_latestMessage, "latestMessage");
add(M.method.method_wukong_im_base_IMDatabase_getWritableDatabase, "getWritableDatabase"); add(M.method.method_wukong_im_base_IMDatabase_getWritableDatabase, "getWritableDatabase");
add(M.method.method_defpackage_MessageDs_update, "a,a"); add(M.method.method_defpackage_MessageDs_update, "a");
add(M.method.method_wukong_im_message_MessageContentImpl_TextContentImpl_text, "text"); add(M.method.method_wukong_im_message_MessageContentImpl_TextContentImpl_text, "text");
add(M.method.method_wukong_im_message_MessageContentImpl_TextContentImpl_setText, "setText"); add(M.method.method_wukong_im_message_MessageContentImpl_TextContentImpl_setText, "setText");
add(M.method.method_android_user_settings_activity_UserSettingsActivity_onCreate, "onCreate");
/** Field */ /** Field */
add(M.field.field_android_dingtalkim_base_model_DingtalkMessage_msgDisplayType, "msgDisplayType"); add(M.field.field_android_dingtalkim_base_model_DingtalkMessage_msgDisplayType, "msgDisplayType");
......
...@@ -68,7 +68,7 @@ public class PluginManager implements XPluginManager { ...@@ -68,7 +68,7 @@ public class PluginManager implements XPluginManager {
mVersionManager = build.mXVersionManager; mVersionManager = build.mXVersionManager;
// 调试开关 // 调试开关
Alog.setDebug(BuildConfig.DEBUG); Alog.setDebug(true);
mHandler = new PluginHandler(); mHandler = new PluginHandler();
ToastUtil.getInstance().init(mContext); ToastUtil.getInstance().init(mContext);
...@@ -99,7 +99,9 @@ public class PluginManager implements XPluginManager { ...@@ -99,7 +99,9 @@ public class PluginManager implements XPluginManager {
for (int i = 0; i < mXPlugins.size(); i++) { for (int i = 0; i < mXPlugins.size(); i++) {
// 开始处理 // 开始处理
handleLoadPackage(mXPlugins.get(mXPlugins.keyAt(i))); XPlugin xPlugin = mXPlugins.get(mXPlugins.keyAt(i));
Alog.i("log plugin:" + xPlugin.getInfo().getName());
handleLoadPackage(xPlugin);
} }
} }
...@@ -151,6 +153,7 @@ public class PluginManager implements XPluginManager { ...@@ -151,6 +153,7 @@ public class PluginManager implements XPluginManager {
/** /**
* 获取所有插件 * 获取所有插件
*
* @return * @return
*/ */
@Override @Override
...@@ -202,6 +205,7 @@ public class PluginManager implements XPluginManager { ...@@ -202,6 +205,7 @@ public class PluginManager implements XPluginManager {
/** /**
* 开始处理需要Hook的插件 * 开始处理需要Hook的插件
*
* @param xPlugin * @param xPlugin
*/ */
private void handleLoadPackage(XPlugin xPlugin) { private void handleLoadPackage(XPlugin xPlugin) {
...@@ -236,6 +240,7 @@ public class PluginManager implements XPluginManager { ...@@ -236,6 +240,7 @@ public class PluginManager implements XPluginManager {
/** /**
* 添加到插件到列表中 * 添加到插件到列表中
*
* @param xPlugin * @param xPlugin
*/ */
private void addPlugin(XPlugin xPlugin) { private void addPlugin(XPlugin xPlugin) {
......
...@@ -22,7 +22,9 @@ import android.view.View; ...@@ -22,7 +22,9 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.sky.xposed.common.ui.view.SimpleItemView; import com.sky.xposed.common.ui.view.SimpleItemView;
import com.sky.xposed.common.util.Alog;
import com.sky.xposed.common.util.ResourceUtil; import com.sky.xposed.common.util.ResourceUtil;
import com.sky.xposed.javax.MethodHook;
import com.sky.xposed.rimet.BuildConfig; import com.sky.xposed.rimet.BuildConfig;
import com.sky.xposed.rimet.Constant; import com.sky.xposed.rimet.Constant;
import com.sky.xposed.rimet.data.M; import com.sky.xposed.rimet.data.M;
...@@ -47,29 +49,35 @@ public class SettingsPlugin extends BasePlugin { ...@@ -47,29 +49,35 @@ public class SettingsPlugin extends BasePlugin {
@Override @Override
public void onHandleLoadPackage() { public void onHandleLoadPackage() {
MethodHook.AfterCallback afterCallback = param -> {
Alog.i("进入钉钉用户设置页面..");
final Activity activity = (Activity) param.thisObject;
View view = activity.findViewById(ResourceUtil.getId(activity, getXString(M.res.res_setting_msg_notice)));
ViewGroup viewGroup = (ViewGroup) view.getParent();
final int index = viewGroup.indexOfChild(view);
SimpleItemView viewDing = new SimpleItemView(activity);
viewDing.getNameView().setTextSize(17);
viewDing.setName(Constant.Name.TITLE);
viewDing.setExtend("v" + BuildConfig.VERSION_NAME);
viewDing.setOnClickListener(v -> {
// 打开设置
openSettings(activity);
});
viewGroup.addView(viewDing, index);
};
findMethod( findMethod(
M.classz.class_android_user_settings_activity_NewSettingActivity, M.classz.class_android_user_settings_activity_NewSettingActivity,
M.method.method_android_user_settings_activity_NewSettingActivity_onCreate, M.method.method_android_user_settings_activity_NewSettingActivity_onCreate,
Bundle.class) Bundle.class)
.after(param -> { .after(afterCallback);
findMethod(
final Activity activity = (Activity) param.thisObject; M.classz.class_android_user_settings_activity_UserSettingsActivity,
M.method.method_android_user_settings_activity_UserSettingsActivity_onCreate,
View view = activity.findViewById(ResourceUtil.getId(activity, getXString(M.res.res_setting_msg_notice))); Bundle.class)
ViewGroup viewGroup = (ViewGroup) view.getParent(); .after(afterCallback);
final int index = viewGroup.indexOfChild(view);
SimpleItemView viewDing = new SimpleItemView(activity);
viewDing.getNameView().setTextSize(17);
viewDing.setName(Constant.Name.TITLE);
viewDing.setExtend("v" + BuildConfig.VERSION_NAME);
viewDing.setOnClickListener(v -> {
// 打开设置
openSettings(activity);
});
viewGroup.addView(viewDing, index);
});
} }
@Override @Override
......
...@@ -42,9 +42,10 @@ buildscript { ...@@ -42,9 +42,10 @@ buildscript {
name "contralSnapshot" name "contralSnapshot"
url "https://oss.sonatype.org/content/repositories/snapshots/" url "https://oss.sonatype.org/content/repositories/snapshots/"
} }
google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.4.1' classpath 'com.android.tools.build:gradle:3.5.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment