Skip to content

Commit 6e7288e

Browse files
committed
feat: disable PC Manager clipboard region validation
1 parent 467672b commit 6e7288e

File tree

6 files changed

+69
-1
lines changed

6 files changed

+69
-1
lines changed

library/core/src/main/res/values-zh-rCN/strings_app.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,8 @@
971971
<string name="milink_unlock_mishare">解锁小米妙享</string>
972972
<string name="milink_unlock_send_app">解锁全部应用流转</string>
973973
<string name="milink_unlock_send_app_desc">需要额外勾选 "跨屏协同服务" 作用域</string>
974+
<string name="milink_disable_pc_clipboard_region_check">关闭电脑管家剪贴板地区校验</string>
975+
<string name="milink_disable_pc_clipboard_region_check_desc">修复电脑管家向手机或平板同步剪贴板时,因地区不一致被互联互通服务拦截</string>
974976
<string name="milink_allow_camera_devices">强制支持摄像头流转</string>
975977
<string name="milink_fuck_hpplay">阻止生成乐播投屏相关文件</string>
976978
<!--录音机-->

library/core/src/main/res/values-zh-rHK/strings_app.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,10 @@
933933
<!--Cast-->
934934
<string name="milink_hyperos">互聯互通服務</string>
935935
<string name="milink_unlock_mishare">解鎖小米妙享</string>
936+
<string name="milink_unlock_send_app">解鎖全部應用流轉</string>
937+
<string name="milink_unlock_send_app_desc">需要額外勾選「跨屏協同服務」作用域</string>
938+
<string name="milink_disable_pc_clipboard_region_check">關閉電腦管家剪貼簿地區校驗</string>
939+
<string name="milink_disable_pc_clipboard_region_check_desc">修復電腦管家向手機或平板同步剪貼簿時,因地區不一致被互聯互通服務攔截</string>
936940
<string name="milink_allow_camera_devices">強制支持攝像頭流轉</string>
937941
<string name="milink_fuck_hpplay">阻止生成樂播投屏相關檔案</string>
938942
<!--Sound Recorder-->

library/core/src/main/res/values/strings_app.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,8 @@
10331033
<string name="milink_unlock_mishare">Unlock Device interconnection</string>
10341034
<string name="milink_unlock_send_app">Unlock all app transfers</string>
10351035
<string name="milink_unlock_send_app_desc">Requires additionally checking the \"com.xiaomi.mirror\" scope</string>
1036+
<string name="milink_disable_pc_clipboard_region_check">Disable PC Manager clipboard region validation</string>
1037+
<string name="milink_disable_pc_clipboard_region_check_desc">Fixes PC to phone or tablet clipboard sync blocked by region mismatch</string>
10361038
<string name="milink_allow_camera_devices">Force support for camera streaming</string>
10371039
<string name="milink_fuck_hpplay">Block generate of hpplay folders</string>
10381040
<!--Sound Recorder-->

library/core/src/main/res/xml/milink.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
android:key="prefs_key_milink_unlock_send_app"
3333
android:defaultValue="false" />
3434

35+
<SwitchPreference
36+
android:summary="@string/milink_disable_pc_clipboard_region_check_desc"
37+
android:title="@string/milink_disable_pc_clipboard_region_check"
38+
android:key="prefs_key_milink_disable_pc_clipboard_region_check"
39+
android:defaultValue="false" />
40+
3541
<SwitchPreference
3642
android:title="@string/milink_allow_camera_devices"
3743
android:key="prefs_key_milink_allow_camera_devices"
@@ -44,4 +50,4 @@
4450

4551
</PreferenceCategory>
4652

47-
</PreferenceScreen>
53+
</PreferenceScreen>

library/libhook/src/main/java/com/sevtinge/hyperceiler/libhook/app/MiLink.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.sevtinge.hyperceiler.common.utils.PrefsBridge;
2323
import com.sevtinge.hyperceiler.libhook.base.BaseLoad;
2424
import com.sevtinge.hyperceiler.libhook.rules.milink.AllowCameraDevices;
25+
import com.sevtinge.hyperceiler.libhook.rules.milink.DisablePcManagerClipboardRegionCheck;
2526
import com.sevtinge.hyperceiler.libhook.rules.milink.FuckHpplay;
2627
import com.sevtinge.hyperceiler.libhook.rules.milink.UnlockMiShare;
2728
import com.sevtinge.hyperceiler.libhook.rules.milink.UnlockSendApp;
@@ -33,6 +34,7 @@ public class MiLink extends BaseLoad {
3334
public void onPackageLoaded() {
3435
initHook(new UnlockMiShare(), PrefsBridge.getBoolean("milink_unlock_mishare"));
3536
initHook(UnlockSendApp.INSTANCE, PrefsBridge.getBoolean("milink_unlock_send_app"));
37+
initHook(new DisablePcManagerClipboardRegionCheck(), PrefsBridge.getBoolean("milink_disable_pc_clipboard_region_check"));
3638
initHook(new AllowCameraDevices(), PrefsBridge.getBoolean("milink_allow_camera_devices"));
3739
initHook(new FuckHpplay(), PrefsBridge.getBoolean("milink_fuck_hpplay"));
3840
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* This file is part of HyperCeiler.
3+
4+
* HyperCeiler is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU Affero General Public License as
6+
* published by the Free Software Foundation, either version 3 of the
7+
* License.
8+
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU Affero General Public License for more details.
13+
14+
* You should have received a copy of the GNU Affero General Public License
15+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
16+
17+
* Copyright (C) 2023-2026 HyperCeiler Contributions
18+
*/
19+
package com.sevtinge.hyperceiler.libhook.rules.milink;
20+
21+
import android.content.Context;
22+
23+
import com.sevtinge.hyperceiler.common.log.XposedLog;
24+
import com.sevtinge.hyperceiler.libhook.base.BaseHook;
25+
import com.sevtinge.hyperceiler.libhook.callback.IMethodHook;
26+
27+
public class DisablePcManagerClipboardRegionCheck extends BaseHook {
28+
@Override
29+
public void init() {
30+
IMethodHook regionCheckHook = returnConstant(true);
31+
IMethodHook regionValueHook = returnConstant("cn");
32+
33+
hookRegionUtils("com.xiaomi.dist.universalclipboardservice.utils.LyraUtil", regionCheckHook, regionValueHook);
34+
hookRegionUtils("com.xiaomi.dist.file.service.utils.LyraUtil", regionCheckHook, regionValueHook);
35+
}
36+
37+
private void hookRegionUtils(String className, IMethodHook regionCheckHook, IMethodHook regionValueHook) {
38+
try {
39+
findAndHookMethod(className, "isSameRegionWithLocal", Context.class, String.class, regionCheckHook);
40+
XposedLog.i(TAG, getPackageName(), "Hooked " + className + "#isSameRegionWithLocal");
41+
} catch (Throwable t) {
42+
XposedLog.w(TAG, getPackageName(), "Failed to hook " + className + "#isSameRegionWithLocal", t);
43+
}
44+
45+
try {
46+
findAndHookMethod(className, "getDeviceRegion", Context.class, String.class, regionValueHook);
47+
XposedLog.i(TAG, getPackageName(), "Hooked " + className + "#getDeviceRegion");
48+
} catch (Throwable t) {
49+
XposedLog.w(TAG, getPackageName(), "Failed to hook " + className + "#getDeviceRegion", t);
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)