我们在帐户工具包中收到以下错误。
如果有人能说出它的原因以及如何解决它,那将非常有帮助。
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();
}
});
}
}
}