From 308604016b84768d737fdec385cabd82e63d58e4 Mon Sep 17 00:00:00 2001 From: Andy Zhang Date: Thu, 25 Feb 2016 10:59:34 +0800 Subject: [PATCH] Fix(IMountServiceHookHandle): Bug fix:https://github.com/Qihoo360/DroidPlugin/issues/130 --- .../hook/handle/IMountServiceHookHandle.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/project/Libraries/DroidPlugin/src/com/morgoo/droidplugin/hook/handle/IMountServiceHookHandle.java b/project/Libraries/DroidPlugin/src/com/morgoo/droidplugin/hook/handle/IMountServiceHookHandle.java index 6e16540..9e607b2 100644 --- a/project/Libraries/DroidPlugin/src/com/morgoo/droidplugin/hook/handle/IMountServiceHookHandle.java +++ b/project/Libraries/DroidPlugin/src/com/morgoo/droidplugin/hook/handle/IMountServiceHookHandle.java @@ -36,6 +36,10 @@ import java.lang.reflect.Method; * Created by Andy Zhang(zhangyong232@gmail.com) on 2015/3/6. */ public class IMountServiceHookHandle extends BaseHookHandle { + + private static final String ANDROID_DATA = "Android/data/"; + private static final String ANDROID_OBB = "Android/obb/"; + public IMountServiceHookHandle(Context context) { super(context); } @@ -66,14 +70,14 @@ public class IMountServiceHookHandle extends BaseHookHandle { if (args != null && args.length > index1 && args[index1] instanceof String) { String path = (String) args[index1]; // String path1 = new File(Environment.getExternalStorageDirectory(), "Android/data/").getPath(); - final boolean isAndroiDataHostPath = path.indexOf("Android/data/" + mHostContext.getPackageName()) < 0; - if (path != null && isAndroiDataHostPath) { - path = path.replaceFirst("Android/data/", "Android/data/" + mHostContext.getPackageName() + "/Plugin/"); - args[index1] = path; - } else { - final boolean isAndroiObbHostPath = path.indexOf("Android/obb/" + mHostContext.getPackageName()) < 0; - if (path != null && isAndroiObbHostPath) { - path = path.replaceFirst("Android/obb/", "Android/obb/" + mHostContext.getPackageName() + "/Plugin/"); + if (path != null) { + final boolean isAndroiDataHostPath = path.indexOf(ANDROID_DATA) < 0; + final boolean isAndroiObbHostPath = path.indexOf(ANDROID_OBB) < 0; + if (isAndroiDataHostPath && !isAndroiObbHostPath) { + path = path.replaceFirst(ANDROID_DATA, ANDROID_DATA + mHostContext.getPackageName() + "/Plugin/"); + args[index1] = path; + } else if (!isAndroiDataHostPath && isAndroiObbHostPath) { + path = path.replaceFirst(ANDROID_OBB, ANDROID_OBB + mHostContext.getPackageName() + "/Plugin/"); args[index1] = path; } } @@ -84,14 +88,14 @@ public class IMountServiceHookHandle extends BaseHookHandle { if (args != null && args.length > index1 && args[index1] instanceof String) { String path = (String) args[index1]; // String path1 = new File(Environment.getExternalStorageDirectory(), "Android/data/").getPath(); - final boolean isHostPath = path.indexOf("Android/data/" + mHostContext.getPackageName()) < 0; - if (path != null && isHostPath) { - path = path.replaceFirst("Android/data/", "Android/data/" + mHostContext.getPackageName() + "/Plugin/"); - args[index1] = path; - } else { - final boolean isAndroiObbHostPath = path.indexOf("Android/obb/" + mHostContext.getPackageName()) < 0; - if (path != null && isAndroiObbHostPath) { - path = path.replaceFirst("Android/obb/", "Android/obb/" + mHostContext.getPackageName() + "/Plugin/"); + if (path != null) { + final boolean isAndroiDataHostPath = path.indexOf(ANDROID_DATA) < 0; + final boolean isAndroiObbHostPath = path.indexOf(ANDROID_OBB) < 0; + if (isAndroiDataHostPath && !isAndroiObbHostPath) { + path = path.replaceFirst(ANDROID_DATA, ANDROID_DATA + mHostContext.getPackageName() + "/Plugin/"); + args[index1] = path; + } else if (!isAndroiDataHostPath && isAndroiObbHostPath) { + path = path.replaceFirst(ANDROID_OBB, ANDROID_OBB + mHostContext.getPackageName() + "/Plugin/"); args[index1] = path; } }