アカウント キットで次のエラーが発生します。
どなたか原因と直し方を教えていただけると大変助かります。
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.getItem
Facebookライブラリに書かれたコードが原因で行 が発生しているのでしょうか?それとも、構成ファイルなどを使用して制御し、何らかの方法で変更できるものですか?
アプリで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();
}
});
}
}
}