Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions library/core/src/main/res/values-zh-rCN/strings_app.xml
Original file line number Diff line number Diff line change
Expand Up @@ -971,6 +971,8 @@
<string name="milink_unlock_mishare">解锁小米妙享</string>
<string name="milink_unlock_send_app">解锁全部应用流转</string>
<string name="milink_unlock_send_app_desc">需要额外勾选 "跨屏协同服务" 作用域</string>
<string name="milink_disable_pc_clipboard_region_check">关闭电脑管家剪贴板地区校验</string>
<string name="milink_disable_pc_clipboard_region_check_desc">修复电脑管家向手机或平板同步剪贴板时,因地区不一致被互联互通服务拦截</string>
<string name="milink_allow_camera_devices">强制支持摄像头流转</string>
<string name="milink_fuck_hpplay">阻止生成乐播投屏相关文件</string>
<!--录音机-->
Expand Down
4 changes: 4 additions & 0 deletions library/core/src/main/res/values-zh-rHK/strings_app.xml
Original file line number Diff line number Diff line change
Expand Up @@ -933,6 +933,10 @@
<!--Cast-->
<string name="milink_hyperos">互聯互通服務</string>
<string name="milink_unlock_mishare">解鎖小米妙享</string>
<string name="milink_unlock_send_app">解鎖全部應用流轉</string>
<string name="milink_unlock_send_app_desc">需要額外勾選「跨屏協同服務」作用域</string>
<string name="milink_disable_pc_clipboard_region_check">關閉電腦管家剪貼簿地區校驗</string>
<string name="milink_disable_pc_clipboard_region_check_desc">修復電腦管家向手機或平板同步剪貼簿時,因地區不一致被互聯互通服務攔截</string>
<string name="milink_allow_camera_devices">強制支持攝像頭流轉</string>
<string name="milink_fuck_hpplay">阻止生成樂播投屏相關檔案</string>
<!--Sound Recorder-->
Expand Down
2 changes: 2 additions & 0 deletions library/core/src/main/res/values/strings_app.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1033,6 +1033,8 @@
<string name="milink_unlock_mishare">Unlock Device interconnection</string>
<string name="milink_unlock_send_app">Unlock all app transfers</string>
<string name="milink_unlock_send_app_desc">Requires additionally checking the \"com.xiaomi.mirror\" scope</string>
<string name="milink_disable_pc_clipboard_region_check">Disable PC Manager clipboard region validation</string>
<string name="milink_disable_pc_clipboard_region_check_desc">Fixes PC to phone or tablet clipboard sync blocked by region mismatch</string>
<string name="milink_allow_camera_devices">Force support for camera streaming</string>
<string name="milink_fuck_hpplay">Block generate of hpplay folders</string>
<!--Sound Recorder-->
Expand Down
8 changes: 7 additions & 1 deletion library/core/src/main/res/xml/milink.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@
android:key="prefs_key_milink_unlock_send_app"
android:defaultValue="false" />

<SwitchPreference
android:summary="@string/milink_disable_pc_clipboard_region_check_desc"
android:title="@string/milink_disable_pc_clipboard_region_check"
android:key="prefs_key_milink_disable_pc_clipboard_region_check"
android:defaultValue="false" />

<SwitchPreference
android:title="@string/milink_allow_camera_devices"
android:key="prefs_key_milink_allow_camera_devices"
Expand All @@ -44,4 +50,4 @@

</PreferenceCategory>

</PreferenceScreen>
</PreferenceScreen>
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.sevtinge.hyperceiler.common.utils.PrefsBridge;
import com.sevtinge.hyperceiler.libhook.base.BaseLoad;
import com.sevtinge.hyperceiler.libhook.rules.milink.AllowCameraDevices;
import com.sevtinge.hyperceiler.libhook.rules.milink.DisablePcManagerClipboardRegionCheck;
import com.sevtinge.hyperceiler.libhook.rules.milink.FuckHpplay;
import com.sevtinge.hyperceiler.libhook.rules.milink.UnlockMiShare;
import com.sevtinge.hyperceiler.libhook.rules.milink.UnlockSendApp;
Expand All @@ -33,6 +34,7 @@ public class MiLink extends BaseLoad {
public void onPackageLoaded() {
initHook(new UnlockMiShare(), PrefsBridge.getBoolean("milink_unlock_mishare"));
initHook(UnlockSendApp.INSTANCE, PrefsBridge.getBoolean("milink_unlock_send_app"));
initHook(new DisablePcManagerClipboardRegionCheck(), PrefsBridge.getBoolean("milink_disable_pc_clipboard_region_check"));
initHook(new AllowCameraDevices(), PrefsBridge.getBoolean("milink_allow_camera_devices"));
initHook(new FuckHpplay(), PrefsBridge.getBoolean("milink_fuck_hpplay"));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* This file is part of HyperCeiler.

* HyperCeiler is free 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.

* This program 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
* along with this program. If not, see <https://www.gnu.org/licenses/>.

* Copyright (C) 2023-2026 HyperCeiler Contributions
*/
package com.sevtinge.hyperceiler.libhook.rules.milink;

import android.content.Context;

import com.sevtinge.hyperceiler.common.log.XposedLog;
import com.sevtinge.hyperceiler.libhook.base.BaseHook;
import com.sevtinge.hyperceiler.libhook.callback.IMethodHook;

public class DisablePcManagerClipboardRegionCheck extends BaseHook {
@Override
public void init() {
IMethodHook regionCheckHook = returnConstant(true);
IMethodHook regionValueHook = returnConstant("cn");

hookRegionUtils("com.xiaomi.dist.universalclipboardservice.utils.LyraUtil", regionCheckHook, regionValueHook);
hookRegionUtils("com.xiaomi.dist.file.service.utils.LyraUtil", regionCheckHook, regionValueHook);
}

private void hookRegionUtils(String className, IMethodHook regionCheckHook, IMethodHook regionValueHook) {
try {
findAndHookMethod(className, "isSameRegionWithLocal", Context.class, String.class, regionCheckHook);
XposedLog.i(TAG, getPackageName(), "Hooked " + className + "#isSameRegionWithLocal");
} catch (Throwable t) {
XposedLog.w(TAG, getPackageName(), "Failed to hook " + className + "#isSameRegionWithLocal", t);
}

try {
findAndHookMethod(className, "getDeviceRegion", Context.class, String.class, regionValueHook);
XposedLog.i(TAG, getPackageName(), "Hooked " + className + "#getDeviceRegion");
} catch (Throwable t) {
XposedLog.w(TAG, getPackageName(), "Failed to hook " + className + "#getDeviceRegion", t);
}
}
}
Loading