Проблема с залогом при повторном открытии заявки

Приложение вылетает, когда приложение выходит на передний план. Когда приложение убито и перезапущено, оно не падает, но когда оно свернуто и вновь открыто, происходит сбой со следующим исключением

java.lang.NoClassDefFoundError: com.moengage.locationlibrary.LocationHandlerImpl в java.lang.Class.classForName(собственный метод) в java.lang.Class.forName(Class.java:324) в классе java.lang.Class.forName (.java:285) в com.moengage.location.GeoManager.getHandler(GeoManager.java:33) в com.moengage.core.MoEDispatcher.syncInAppsAndGeo(MoEDispatcher.java:209) в com.moengage.core.MoEDispat MoEDispatcher.java:159) в com.moe.pushlibrary.MoEHelper.onNewIntent(MoEHelper.java:287) в com.moe.pushlibrary.MoEHelper.onStartInternal(MoEHelper.java:324) в com.moe.Mo. (MoEActivityLifeCycleCallBacks.java:33) в android.app.Application.dispatchActivityStarted(Application.java:205) в android.app.Activity.onStart(Activity.java:1146) в android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:542) на android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) на android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) в android.app.Activity.performStart(Activity.java:6253) в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java):2476) в android.app.ActivityThread.-wrap11(ActivityThread.java) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) в android.os.Handler.dispatchMessage(Handler.java:102) в android.os.Looper.loop(Looper.java:148) на android.app.ActivityThread.main(ActivityThread.java:5417) на java.lang.reflect.Method.invoke(собственный метод) на com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 10-23 13:26:14.136 7406-7406/? I/Process: отправка сигнала. PID: 7406 SIG: 9

Я попробовал решение для NoClassDefFoundError, но оно не сработало. Я запутался в том, что он работает при перезапуске, но не когда он выходит на передний план из свернутого состояния.

Ниже приведен мой класс приложения:

public class AppController extends Application implements PushManager.OnTokenReceivedListener {
    MoEHelper helper;

    @Override
    public void onCreate() {
        super.onCreate();

        helper = MoEHelper.getInstance(getApplicationContext());
        helper.autoIntegrate(this);
        PushManager.getInstance().setTokenObserver(this);

        Log.e("TAG", "onCreate() AppController");
        SharedPreferences pref = getApplicationContext().getSharedPreferences("MoTest", Context.MODE_PRIVATE);
        if (pref.contains("newInstall")) {
            helper.setExistingUser(true);
        } else {
            helper.setExistingUser(false);
        }

    }

    @Override
    public void onTokenReceived(String token) {
        Log.e("TAG", "Appcontroller Token: " + token);
    }
}

и это мой MainActivity:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
}

2 ответа

MoEngage SDK предполагает, что у вашего приложения есть зависимость от служб определения местоположения, если у вас есть разрешение на определение местоположения, то же самое и здесь. При этом SDK предоставляет механизм для исключения библиотеки местоположений в случае, если вы не хотите использовать нашу функцию гео-фехтования. Это можно сделать следующим образом:

compile ('com.moengage:moe-android-sdk:7.7.16') {
        exclude group: 'com.moengage', module: 'moe-location-lib'
    }

Вы можете обратиться к официальным документам здесь для более подробной информации.

PS: я один из участников MoEngage SDK. Дайте мне знать, если это не решено.

Проверьте файл LocationHandlerImpl.java и посмотрите, разрешены ли GoogleApiClient и LocationServices. Существует вероятность того, что вы не добавили зависимость для служб определения местоположения.

Если они не разрешены, добавьте соответствующую зависимость в ваш файл Gradle

'Com.google.android.gms: игры-сервисы местоположение:XXX'

Синхронизируйте и попробуйте запустить его снова. Это должно сделать работу

Другие вопросы по тегам