diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index 21fd1680c76..d4ebb064b1b 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -2033,13 +2033,42 @@ void JNICALL setOfflineRegionDownloadState(JNIEnv *env, jobject obj, jobject off defaultFileSource->setOfflineRegionDownloadState(*offlineRegion, state); } -void JNICALL getOfflineRegionStatus(JNIEnv *env, jobject obj, jobject offlineRegion, jobject statusCallback) { +void JNICALL getOfflineRegionStatus(JNIEnv *env, jobject obj, jobject offlineRegion_, jobject statusCallback) { mbgl::Log::Error(mbgl::Event::JNI, "getOfflineRegionStatus"); + // Offline region + // jlong offlineRegionPtr = env->GetLongField(offlineRegion_, offlineRegionPtrId); + // mbgl::OfflineRegion *offlineRegion = reinterpret_cast(offlineRegionPtr); + + // File source + // jobject jmanager = env->GetObjectField(offlineRegion_, offlineRegionOfflineManagerId); + // jlong defaultFileSourcePtr = env->GetLongField(jmanager, offlineManagerClassPtrId); + // mbgl::DefaultFileSource *defaultFileSource = reinterpret_cast(defaultFileSourcePtr); + + // Set new state + // defaultFileSource->getOfflineRegionStatus(*offlineRegion, std::function)>); } -void JNICALL deleteOfflineRegion(JNIEnv *env, jobject obj, jobject offlineRegion, jobject deleteCallback) { +void JNICALL deleteOfflineRegion(JNIEnv *env, jobject obj, jobject offlineRegion_, jobject deleteCallback) { mbgl::Log::Error(mbgl::Event::JNI, "deleteOfflineRegion"); + + // Offline region + jlong offlineRegionPtr = env->GetLongField(offlineRegion_, offlineRegionPtrId); + mbgl::OfflineRegion *offlineRegion = reinterpret_cast(offlineRegionPtr); + + // File source + jobject jmanager = env->GetObjectField(offlineRegion_, offlineRegionOfflineManagerId); + jlong defaultFileSourcePtr = env->GetLongField(jmanager, offlineManagerClassPtrId); + mbgl::DefaultFileSource *defaultFileSource = reinterpret_cast(defaultFileSourcePtr); + + // Set new state + defaultFileSource->deleteOfflineRegion(std::move(*offlineRegion), [](std::exception_ptr error) { + if (error) { + mbgl::Log::Error(mbgl::Event::JNI, "Delete region failed."); + } else { + mbgl::Log::Error(mbgl::Event::JNI, "Region deleted."); + } + }); } // Offline calls end