diff --git a/app/build.gradle b/app/build.gradle
index e8a4074..435d5ef 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,8 +17,8 @@ android {
applicationId "io.virtualapp.sandvxposed"
minSdkVersion 19
targetSdkVersion 26
- versionCode 36
- versionName "1.2.5.1.3.1.1.7"
+ versionCode 37
+ versionName "1.2.5.1.3.1.1.8"
multiDexEnabled true
android {
defaultConfig {
diff --git a/app/release/app-release.apk b/app/release/app-release.apk
index 3aa19bd..0627624 100644
Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ
diff --git a/app/release/output.json b/app/release/output.json
index de0f0d6..e2ba9de 100644
--- a/app/release/output.json
+++ b/app/release/output.json
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":36,"versionName":"1.2.5.1.3.1.1.7","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":37,"versionName":"1.2.5.1.3.1.1.8","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 83af12d..83b13b5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,7 +12,13 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
-
+
+
= baseLine - mRenameArea.getHeight())
{
- // TODO rename app
- int deleteAppAreaStartX = location[0];
- if (x < deleteAppAreaStartX)
- {
- mRenameTextView.setTextColor(Color.parseColor("#0099cc"));
- }
- else
- {
- mRenameTextView.setTextColor(Color.WHITE);
- }
+ // TODO: 优化一下位置,要不然那个位置太难被触及了。
+ mRenameTextView.setTextColor(Color.parseColor("#0099cc"));
+ mDeleteAppTextView.setTextColor(Color.WHITE);
+ mCreateShortcutTextView.setTextColor(Color.WHITE);
+ upAtRenameArea = true;
+ upAtCreateShortcutArea = false;
+ upAtDeleteAppArea = false;
}
else{
upAtCreateShortcutArea = false;
upAtDeleteAppArea = false;
+ upAtRenameArea = false;
mDeleteAppTextView.setTextColor(Color.WHITE);
mCreateShortcutTextView.setTextColor(Color.WHITE);
mRenameTextView.setTextColor(Color.WHITE);
diff --git a/app/src/main/java/io/virtualapp/home/repo/AppRepository.java b/app/src/main/java/io/virtualapp/home/repo/AppRepository.java
index d1d76dc..bab9418 100644
--- a/app/src/main/java/io/virtualapp/home/repo/AppRepository.java
+++ b/app/src/main/java/io/virtualapp/home/repo/AppRepository.java
@@ -4,6 +4,7 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.util.Log;
import com.lody.virtual.GmsSupport;
import com.lody.virtual.client.core.InstallStrategy;
@@ -26,6 +27,8 @@
import io.virtualapp.home.models.AppInfoLite;
import io.virtualapp.home.models.MultiplePackageAppData;
import io.virtualapp.home.models.PackageAppData;
+import sk.vpkg.manager.RenameAppUtils;
+import sk.vpkg.provider.BanNotificationProvider;
/**
* @author Lody
@@ -65,12 +68,27 @@ public Promise, Throwable, Void> getVirtualApps() {
}
PackageAppData data = new PackageAppData(mContext, info);
if (VirtualCore.get().isAppInstalledAsUser(0, info.packageName)) {
- models.add(data);
+ String lpIsSet = RenameAppUtils.getRenamedApp(data.packageName,0);
+ if(lpIsSet!=null)
+ {
+ data.name = lpIsSet;
+ models.add(data);
+ }
+ else
+ models.add(data);
}
int[] userIds = info.getInstalledUsers();
for (int userId : userIds) {
+ data = new PackageAppData(mContext, info);
if (userId != 0) {
- models.add(new MultiplePackageAppData(data, userId));
+ String lpIsSet = RenameAppUtils.getRenamedApp(data.packageName,userId);
+ if(lpIsSet!=null)
+ {
+ data.name = lpIsSet;
+ models.add(new MultiplePackageAppData(data, userId));
+ }
+ else
+ models.add(new MultiplePackageAppData(data, userId));
}
}
}
diff --git a/app/src/main/res/layout/activity_rename_app.xml b/app/src/main/res/layout/activity_rename_app.xml
new file mode 100644
index 0000000..bf18959
--- /dev/null
+++ b/app/src/main/res/layout/activity_rename_app.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/content_rename_app.xml b/app/src/main/res/layout/content_rename_app.xml
new file mode 100644
index 0000000..9b5d1b8
--- /dev/null
+++ b/app/src/main/res/layout/content_rename_app.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/vloc_setting_fragment.xml b/app/src/main/res/layout/vloc_setting_fragment.xml
index a3d24b6..00c472e 100644
--- a/app/src/main/res/layout/vloc_setting_fragment.xml
+++ b/app/src/main/res/layout/vloc_setting_fragment.xml
@@ -111,4 +111,12 @@
android:text="@string/about"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2" />
+
+
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 2b53bfc..92d51d1 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -104,4 +104,5 @@
拾取
重命名
防止进程被系统结束
+ 禁用Xposed功能
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 56060ec..7db8ff7 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -104,4 +104,5 @@
拾取
重命名
防止进程被K
+ 禁用Xposed功能
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 012063a..9dea478 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -162,4 +162,6 @@
Pickup
Rename
Prevent process from killing.
+ RenameApp
+ Disable Xposed
diff --git a/lib/src/main/java/com/lody/virtual/client/VClientImpl.java b/lib/src/main/java/com/lody/virtual/client/VClientImpl.java
index e92985f..841c928 100644
--- a/lib/src/main/java/com/lody/virtual/client/VClientImpl.java
+++ b/lib/src/main/java/com/lody/virtual/client/VClientImpl.java
@@ -82,6 +82,7 @@
import mirror.java.lang.ThreadGroupN;
import sk.vpkg.live.WhiteService;
import sk.vpkg.provider.BanNotificationProvider;
+import sk.vpkg.xposed.XposedUtils;
import static com.lody.virtual.os.VUserHandle.getUserId;
@@ -317,7 +318,8 @@ private void bindApplicationNoCheck(String packageName, String processName, Cond
InvocationStubManager.getInstance().checkEnv(AppInstrumentation.class);
}
- SandXposed.injectXposedModule(context, packageName, processName);
+ if(XposedUtils.isEnabledXposed(packageName))
+ SandXposed.injectXposedModule(context, packageName, processName);
mInitialApplication = LoadedApk.makeApplication.call(data.info, false, null);
diff --git a/lib/src/main/java/com/lody/virtual/client/core/VirtualCore.java b/lib/src/main/java/com/lody/virtual/client/core/VirtualCore.java
index b2daf80..6b1ff86 100644
--- a/lib/src/main/java/com/lody/virtual/client/core/VirtualCore.java
+++ b/lib/src/main/java/com/lody/virtual/client/core/VirtualCore.java
@@ -63,7 +63,10 @@
import mirror.android.app.ActivityThread;
import sk.vpkg.live.WhiteService;
import sk.vpkg.location.getPkgLocation;
+import sk.vpkg.manager.RenameAppUtils;
import sk.vpkg.notification.SKVPackageNotificationHook;
+import sk.vpkg.provider.BanNotificationProvider;
+import sk.vpkg.xposed.XposedUtils;
/**
* @author Lody
@@ -612,6 +615,13 @@ public boolean isStartup() {
public boolean uninstallPackageAsUser(String pkgName, int userId) {
try {
+ try{
+ RenameAppUtils.undoRenameByUid(pkgName, userId);
+ }
+ catch (Throwable e)
+ {
+ e.printStackTrace();
+ }
return getService().uninstallPackageAsUser(pkgName, userId);
} catch (RemoteException e) {
// Ignore
@@ -620,6 +630,13 @@ public boolean uninstallPackageAsUser(String pkgName, int userId) {
}
public boolean uninstallPackage(String pkgName) {
+ try{
+ RenameAppUtils.undoRenameByUid(pkgName, 0);
+ }
+ catch (Throwable e)
+ {
+ e.printStackTrace();
+ }
try
{
SKVPackageNotificationHook hHook = new SKVPackageNotificationHook();
@@ -630,6 +647,7 @@ public boolean uninstallPackage(String pkgName) {
e.printStackTrace();
}
getPkgLocation.removeLocFromPkg(pkgName);
+ XposedUtils.clearXposed(pkgName);
try {
return getService().uninstallPackage(pkgName);
} catch (RemoteException e) {
diff --git a/lib/src/main/java/com/lody/virtual/client/env/VirtualRuntime.java b/lib/src/main/java/com/lody/virtual/client/env/VirtualRuntime.java
index b57aaa3..1585022 100644
--- a/lib/src/main/java/com/lody/virtual/client/env/VirtualRuntime.java
+++ b/lib/src/main/java/com/lody/virtual/client/env/VirtualRuntime.java
@@ -66,6 +66,10 @@ public static T crash(RemoteException e) throws RuntimeException {
public static boolean isArt() {
- return System.getProperty("java.vm.version").startsWith("2");
+ try{return System.getProperty("java.vm.version").startsWith("2");}catch (Throwable e)
+ {
+ e.printStackTrace();
+ return true;
+ }
}
}
diff --git a/lib/src/main/java/com/lody/virtual/sandxposed/EnvironmentSetup.java b/lib/src/main/java/com/lody/virtual/sandxposed/EnvironmentSetup.java
index b6593d7..98b14a1 100644
--- a/lib/src/main/java/com/lody/virtual/sandxposed/EnvironmentSetup.java
+++ b/lib/src/main/java/com/lody/virtual/sandxposed/EnvironmentSetup.java
@@ -1,13 +1,12 @@
package com.lody.virtual.sandxposed;
import android.content.Context;
-import android.text.TextUtils;
+import android.os.Process;
import com.swift.sandhook.xposedcompat.utils.FileUtils;
import java.io.File;
import java.util.Arrays;
-import android.os.Process;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
@@ -30,7 +29,7 @@ private static void initSystemProp(Context context) {
}
private static void initForWeChat(Context context, String processName) {
- if (!processName.equals("com.tencent.mm"))
+ if (!processName.startsWith("com.tencent.mm"))
return;
//delete tinker patches
File dataDir = new File(context.getApplicationInfo().dataDir);