From dd2e991e3bd2aa92f2fedae67245154cd455fb85 Mon Sep 17 00:00:00 2001 From: guoling Date: Tue, 12 Jan 2021 16:25:47 +0800 Subject: [PATCH] add rootPath paramter for isFileValid() on Android --- Android/MMKV/mmkv/src/main/cpp/native-bridge.cpp | 11 ++++++++--- .../mmkv/src/main/java/com/tencent/mmkv/MMKV.java | 6 +++++- .../main/java/com/tencent/mmkvdemo/MainActivity.java | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Android/MMKV/mmkv/src/main/cpp/native-bridge.cpp b/Android/MMKV/mmkv/src/main/cpp/native-bridge.cpp index e89e9ec0..479375f0 100644 --- a/Android/MMKV/mmkv/src/main/cpp/native-bridge.cpp +++ b/Android/MMKV/mmkv/src/main/cpp/native-bridge.cpp @@ -576,10 +576,15 @@ MMKV_JNI void sync(JNIEnv *env, jobject instance, jboolean sync) { } } -MMKV_JNI jboolean isFileValid(JNIEnv *env, jclass type, jstring oMmapID) { +MMKV_JNI jboolean isFileValid(JNIEnv *env, jclass type, jstring oMmapID, jstring rootPath) { if (oMmapID) { string mmapID = jstring2string(env, oMmapID); - return (jboolean) MMKV::isFileValid(mmapID); + if (rootPath) { + return (jboolean) MMKV::isFileValid(mmapID, nullptr); + } else { + auto root = jstring2string(env, rootPath); + return (jboolean) MMKV::isFileValid(mmapID, &root); + } } return (jboolean) false; } @@ -793,7 +798,7 @@ static JNINativeMethod g_methods[] = { {"close", "()V", (void *) mmkv::close}, {"clearMemoryCache", "()V", (void *) mmkv::clearMemoryCache}, {"sync", "(Z)V", (void *) mmkv::sync}, - {"isFileValid", "(Ljava/lang/String;)Z", (void *) mmkv::isFileValid}, + {"isFileValid", "(Ljava/lang/String;Ljava/lang/String;)Z", (void *) mmkv::isFileValid}, {"ashmemFD", "()I", (void *) mmkv::ashmemFD}, {"ashmemMetaFD", "()I", (void *) mmkv::ashmemMetaFD}, {"jniInitialize", "(Ljava/lang/String;I)V", (void *) mmkv::jniInitialize}, diff --git a/Android/MMKV/mmkv/src/main/java/com/tencent/mmkv/MMKV.java b/Android/MMKV/mmkv/src/main/java/com/tencent/mmkv/MMKV.java index db4c4521..24c28deb 100644 --- a/Android/MMKV/mmkv/src/main/java/com/tencent/mmkv/MMKV.java +++ b/Android/MMKV/mmkv/src/main/java/com/tencent/mmkv/MMKV.java @@ -578,7 +578,11 @@ public class MMKV implements SharedPreferences, SharedPreferences.Editor { // detect if the MMKV file is valid or not // Note: Don't use this to check the existence of the instance, the return value is undefined if the file was never created. - public static native boolean isFileValid(String mmapID); + public static boolean isFileValid(String mmapID) { + return isFileValid(mmapID, null); + } + + public static native boolean isFileValid(String mmapID, @Nullable String rootPath); // SharedPreferences migration @SuppressWarnings("unchecked") diff --git a/Android/MMKV/mmkvdemo/src/main/java/com/tencent/mmkvdemo/MainActivity.java b/Android/MMKV/mmkvdemo/src/main/java/com/tencent/mmkvdemo/MainActivity.java index 81041e8c..28223bb9 100644 --- a/Android/MMKV/mmkvdemo/src/main/java/com/tencent/mmkvdemo/MainActivity.java +++ b/Android/MMKV/mmkvdemo/src/main/java/com/tencent/mmkvdemo/MainActivity.java @@ -218,7 +218,7 @@ public class MainActivity extends AppCompatActivity { //kv.clearAll(); kv.clearMemoryCache(); Log.i("MMKV", "allKeys: " + Arrays.toString(kv.allKeys())); - Log.i("MMKV", "isFileValid[" + kv.mmapID() + "]: " + MMKV.isFileValid(kv.mmapID())); + Log.i("MMKV", "isFileValid[" + kv.mmapID() + "]: " + MMKV.isFileValid(kv.mmapID(), rootPath)); return kv; }