Сбой числа ткани в обратном вызове после проверки

Я добавил комплект Fabric Digit для проверки номера мобильного телефона. Мобильный номер успешно проверяется, но когда я нажимаю кнопку подтверждения, приложение падает, и когда я снова открываю приложение, цифровой сеанс создается успешно, я использовал цифру во многих приложениях, но не понял, в чем проблема. Может быть, конкретная версия или что-то еще ?

Журнал сбоев:

#0. Crashed: IntentService[ATTRIBUTABLE_INVITE_DOWNLOAD_WORKER]: 0 0 0x0000000000000000
       at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:772)
       at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:800)
       at com.digits.sdk.android.DigitsApiClientManager.getUserAuthClient(DigitsApiClientManager.java:53)
       at com.digits.sdk.android.AttributableInviteDownloadService.onHandleIntent(AttributableInviteDownloadService.java:55)
       at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:148)
       at android.os.HandlerThread.run(HandlerThread.java:61)

--

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Object.hashCode()' on a null object reference
       at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:772)
       at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:800)
       at com.digits.sdk.android.DigitsApiClientManager.getUserAuthClient(DigitsApiClientManager.java:53)
       at com.digits.sdk.android.AttributableInviteDownloadService.onHandleIntent(AttributableInviteDownloadService.java:55)
       at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:148)
       at android.os.HandlerThread.run(HandlerThread.java:61)

Более подробный журнал добавлен здесь от Crashalytics

Код, реализованный в приложении:

при создании

authCallback = new AuthCallback() {
                    @Override
                    public void success(DigitsSession session, String phoneNumber) {
                        Log.d("msg", "session : " + session.toString() + " " + phoneNumber);
                        MOBILE_NO = phoneNumber;
                        storeUserData.setString(Constants.USER_MOBILE, phoneNumber);
                        Digits.clearActiveSession();
                        startActivity(new Intent(activity, RegisterActivity.class)
                                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
                    }

                    @Override
                    public void failure(DigitsException error) {
                        error.printStackTrace();
                    }
                };

для проверки

binding.authButton.setCallback(authCallback);
                            binding.authButton.setAuthTheme(R.style.CustomDigitsTheme);

                            AuthConfig.Builder authConfigBuilder = new AuthConfig.Builder()
                                    
                                    .withAuthCallBack(authCallback)
                                    .withPhoneNumber("+91");

                            Digits.authenticate(authConfigBuilder.build());


person Arth Tilva    schedule 11.04.2017    source источник
comment
У меня такая же проблема. Вы решили это?   -  person malhobayyeb    schedule 27.04.2017
comment
проблема по-прежнему не возникает, но не на всех устройствах.   -  person Arth Tilva    schedule 27.04.2017
comment
вы пробовали мой ответ?   -  person malhobayyeb    schedule 27.04.2017


Ответы (2)


Вы можете попробовать код ниже,

DigitsAuthButton digitsButton;
AuthCallback authcallback;
 digitsButton = (DigitsAuthButton) view.findViewById(R.id.auth_button);
        digitsButton.setAuthTheme(R.style.CustomDigitsTheme);
        authcallback = new AuthCallback() {
            @Override
            public void success(DigitsSession session, String phoneNumber) {
                edtMobNumber.setText(phoneNumber);
            }

            @Override
            public void failure(DigitsException exception) {

                exception.printStackTrace();

            }
        };
        digitsButton.setCallback(authcallback);
//launching digits activity on click of edit text
edtMobNumber.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Digits.clearActiveSession();
        digitsButton.performClick();
    }
});

Дайте мне знать, если это работает для вас.

person Patrick R    schedule 15.04.2017

У меня была такая же проблема, и я обнаружил, что очищаю активный сеанс (выхожу из системы) внутри методов обратного вызова.

Удалите эту строку:

Digits.clearActiveSession();

Или в моем случае я удалил эту строку:

Digits.logout();
person malhobayyeb    schedule 26.04.2017