0

アカウント キットで次のエラーが発生します。
どなたか原因と直し方を教えていただけると大変助かります。

java.lang.RuntimeException: 
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4155)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4246)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3360)
  at android.app.ActivityThread.access$1100 (ActivityThread.java:221)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1794)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:158)
  at android.app.ActivityThread.main (ActivityThread.java:7225)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)


Caused by: java.lang.ArrayIndexOutOfBoundsException: 
  at com.facebook.accountkit.ui.PhoneCountryCodeAdapter.getItem (PhoneCountryCodeAdapter.java:253)
  at com.facebook.accountkit.ui.PhoneContentController$TopFragment.setPhoneNumberText (PhoneContentController.java:435)
  at com.facebook.accountkit.ui.PhoneContentController$TopFragment.onViewReadyWithState (PhoneContentController.java:362)
  at com.facebook.accountkit.ui.ViewStateFragment.onActivityCreated (ViewStateFragment.java:66)
  at com.facebook.accountkit.ui.PhoneContentController$TopFragment.onActivityCreated (PhoneContentController.java:201)
  at android.app.Fragment.performActivityCreated (Fragment.java:2289)
  at android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1007)
  at android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1163)
  at android.app.BackStackRecord.run (BackStackRecord.java:793)
  at android.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:1552)
  at android.app.FragmentController.execPendingActions (FragmentController.java:325)
  at android.app.Activity.performResume (Activity.java:7014)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4144)

Caused by: java.lang.ArrayIndexOutOfBoundsException: at com.facebook.accountkit.ui.PhoneCountryCodeAdapter.getItemFacebookライブラリに書かれたコードが原因で行 が発生しているのでしょうか?それとも、構成ファイルなどを使用して制御し、何らかの方法で変更できるものですか?

アプリでhttps://developers.facebook.com/docs/accountkit/androidを使用しているだけです。多くのデバイスで正常に動作していますが、一部のデバイスでエラーが発生しています。

accountkit を呼び出しているアクティビティで onCreate のコードに従います。また、onResume は使用していません。

SkinManager uiManager = new SkinManager(
               SkinManager.Skin.CONTEMPORARY,
               getResources().getColor(R.color.colorPrimary),
               R.drawable.login_bg2,
               SkinManager.Tint.WHITE,
               0.55D);

       intent = new Intent(this, AccountKitActivity.class);

       AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
               new AccountKitConfiguration.AccountKitConfigurationBuilder(
                       LoginType.PHONE,
                       AccountKitActivity.ResponseType.TOKEN); // or .ResponseType.TOKEN

       configurationBuilder.setSMSWhitelist(new String[]{"PK"});
       configurationBuilder.setUIManager(uiManager);
       intent.putExtra(
               AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
               configurationBuilder.build());

レスポンス レスポンス を取得し始めています。

startActivityForResult(intent, APP_REQUEST_CODE);

そして、ここで応答を処理しています

    @Override
        protected void onActivityResult(
                final int requestCode,
                final int resultCode,
                final Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == APP_REQUEST_CODE) {
                btnContinue.setEnabled(true);
                // confirm that this response matches your request
                final AccountKitLoginResult loginResult = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
                if (loginResult.getError() != null) {
                } else if (loginResult.wasCancelled()) {
                } else {
                    progressDialog.show();
                    if(loginResult.getAccessToken()!=null){
                        fbAccessToken = loginResult.getAccessToken().getToken();
                    }

                    AccountKit.getCurrentAccount(new AccountKitCallback<Account>() {
                        @Override
                        public void onSuccess(Account account) {
                            PhoneNumber phoneNumber = account.getPhoneNumber();
                            phoneNumberString = phoneNumber.getPhoneNumber();
 // some bla bla to call our APIs to save the response
}
                        @Override
                        public void onError(AccountKitError accountKitError) {
                            Log.e(TAG, "onError");
                            progressDialog.hide();
                            Toast.makeText(SignInActivity.this, accountKitError.getUserFacingMessage(), Toast.LENGTH_SHORT).show();
                        }
                    });

                }
            }
        }
4

2 に答える 2