add rootPath paramter for isFileValid() on Android

This commit is contained in:
guoling
2021-01-12 16:25:47 +08:00
parent 49eb55d99a
commit dd2e991e3b
3 changed files with 14 additions and 5 deletions
@@ -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},
@@ -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")
@@ -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;
}