diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 75183ee185..1ddf9a4012 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1546,18 +1546,22 @@ JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeAuthenticateUser(JNIEnv * env, jclass, jstring socialToken, jint socialTokenType, jobject listener) { - jobject gListener = env->NewGlobalRef(listener); + std::shared_ptr<_jobject> gListener(env->NewGlobalRef(listener), [](jobject l) + { + jni::GetEnv()->DeleteGlobalRef(l); + }); + auto const tokenStr = jni::ToNativeString(env, socialToken); auto & user = frm()->GetUser(); auto s = make_unique(); s->m_postCallAction = User::Subscriber::Action::RemoveSubscriber; - s->m_onAuthenticate = [env, gListener](bool success) + s->m_onAuthenticate = [gListener](bool success) { - GetPlatform().RunTask(Platform::Thread::Gui, [env, gListener, success]() + GetPlatform().RunTask(Platform::Thread::Gui, [gListener, success] { - static jmethodID const callback = jni::GetMethodID(env, gListener, "onAuthorized", "(Z)V"); - env->CallVoidMethod(gListener, callback, success); - env->DeleteGlobalRef(gListener); + auto e = jni::GetEnv(); + static jmethodID const callback = jni::GetMethodID(e, gListener.get(), "onAuthorized", "(Z)V"); + e->CallVoidMethod(gListener.get(), callback, success); }); }; user.AddSubscriber(std::move(s)); diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkBackupController.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkBackupController.java index 4b962b7320..5a65c7ff12 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkBackupController.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkBackupController.java @@ -104,7 +104,7 @@ public class BookmarkBackupController implements Authorizer.Callback mAuthorizer.detach(); } - public void onActivityResult(int requestCode, int resultCode, Intent data) + public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if (mAuthorizer != null) mAuthorizer.onActivityResult(requestCode, resultCode, data);