Skip to content

Commit d334cb4

Browse files
author
tiann
committed
[VA]: fix exception on samsung Oreo.
1 parent 5ce98f9 commit d334cb4

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

VirtualApp/lib/src/main/java/com/lody/virtual/client/hook/proxies/clipboard/ClipBoardStub.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.lody.virtual.client.hook.base.BinderInvocationProxy;
99
import com.lody.virtual.client.hook.base.ReplaceLastPkgMethodProxy;
1010
import com.lody.virtual.helper.compat.BuildCompat;
11+
import com.lody.virtual.helper.utils.DeviceUtil;
1112

1213
import mirror.android.content.ClipboardManager;
1314
import mirror.android.content.ClipboardManagerOreo;
@@ -23,7 +24,7 @@ public ClipBoardStub() {
2324
}
2425

2526
private static IInterface getInterface() {
26-
if (BuildCompat.isOreo() || ClipboardManager.getService == null) {
27+
if (isOreo()) {
2728
android.content.ClipboardManager cm = (android.content.ClipboardManager)
2829
VirtualCore.get().getContext().getSystemService(Context.CLIPBOARD_SERVICE);
2930
return ClipboardManagerOreo.mService.get(cm);
@@ -49,12 +50,18 @@ protected void onBindMethods() {
4950
@Override
5051
public void inject() throws Throwable {
5152
super.inject();
52-
if (BuildCompat.isOreo()) {
53+
if (isOreo()) {
5354
android.content.ClipboardManager cm = (android.content.ClipboardManager)
5455
VirtualCore.get().getContext().getSystemService(Context.CLIPBOARD_SERVICE);
5556
ClipboardManagerOreo.mService.set(cm, getInvocationStub().getProxyInterface());
5657
} else {
5758
ClipboardManager.sService.set(getInvocationStub().getProxyInterface());
5859
}
5960
}
61+
62+
private static boolean isOreo() {
63+
return BuildCompat.isOreo() &&
64+
!DeviceUtil.isSamsung()
65+
|| ClipboardManager.getService == null;
66+
}
6067
}

VirtualApp/lib/src/main/java/com/lody/virtual/client/hook/proxies/notification/NotificationManagerStub.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.lody.virtual.client.hook.base.MethodInvocationProxy;
88
import com.lody.virtual.client.hook.base.MethodInvocationStub;
99
import com.lody.virtual.client.hook.base.ReplaceCallingPkgMethodProxy;
10+
import com.lody.virtual.helper.utils.DeviceUtil;
1011

1112
import mirror.android.app.NotificationManager;
1213
import mirror.android.widget.Toast;
@@ -47,7 +48,7 @@ protected void onBindMethods() {
4748
addMethodProxy(new ReplaceCallingPkgMethodProxy("getNotificationChannel"));
4849
addMethodProxy(new ReplaceCallingPkgMethodProxy("deleteNotificationChannel"));
4950
}
50-
if ("samsung".equalsIgnoreCase(Build.BRAND) || "samsung".equalsIgnoreCase(Build.MANUFACTURER)) {
51+
if (DeviceUtil.isSamsung()) {
5152
addMethodProxy(new ReplaceCallingPkgMethodProxy("removeEdgeNotification"));
5253
}
5354
}

VirtualApp/lib/src/main/java/com/lody/virtual/helper/utils/DeviceUtil.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,8 @@ public static boolean isMeizuBelowN() {
1818
String display = Build.DISPLAY;
1919
return display.toLowerCase().contains("flyme");
2020
}
21+
22+
public static boolean isSamsung() {
23+
return "samsung".equalsIgnoreCase(Build.BRAND) || "samsung".equalsIgnoreCase(Build.MANUFACTURER);
24+
}
2125
}

0 commit comments

Comments
 (0)