Intereting Posts
Раздражающее поведение для ShapeDrawable в Android Как мы отличаемся от требований, не требующих ответа, в разрешениях Runtime Android M? Android In-App-Purchase плагинов? Как показать всплывающее сообщение без контекста Android и Honeycomb – как иметь значок меню с SDK 13 без наличия "панели действий" Как скрыть делитель между предпочтениями в фрагменте Eclipse: adt не смог создать экземпляр класса com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor Управление скоростью MediaPlayer в Android Установить заголовок и субтитр в CollapsingToolBar макет Android Проблема импорта MoPub, я знаю, что мне просто не хватает чего-то глупого Проблема в строчном массиве в XML-файле: множественные замены, указанные в непозиционном формате и тег </ item>, где ожидается </ string-array> Уменьшение количества строк / столбцов gridlayout в android Как скачать файлы apk с рынка Android на ПК? Лучшее место для вызова RecyclerView.Adapter.notifyItem *? Как добавить тень вокруг кругового изображения

Facebook Android SDK & java.lang.NullPointerException

У меня возникли проблемы с открытием активного сеанса facebook в приложении для Android в соответствии с учебным пособием, опубликованным на https://developers.facebook.com/docs/android/getting-started/facebook-sdk-for-android/

С этим я уже довольно долго не справляюсь! Буду рад, если один из вас укажет мне в правильном направлении! ( Я уверен, что ошибка связана с некоторой настройкой на моей стороне, но я не могу ее заметить )

Вот ошибка, которую я вижу после вызова Session.openActiveSession (this, true, new Session.StatusCallback () в onCreate моей активности (я в значительной степени следую шагам, указанным в учебниках разработчиков facevook)


EDIT: сначала записывается следующее предупреждающее сообщение, после чего появляется сообщение об ошибке на следующем снимке экрана

09-03 19: 26: 22.726: W / Bundle (17458): Key com.facebook.platform.protocol.PROTOCOL_VERSION ожидается Строка, но значение было java.lang.Integer. Значение по умолчанию было возвращено. 09-03 19: 26: 22.736: W / Bundle (17458): попытка создания генерируемого внутреннего исключения: 09-03 19: 26: 22.736: W / Bundle (17458): java.lang.ClassCastException: java.lang.Integer Невозможно передать в java.lang.String 09-03 19: 26: 22.736: W / Bundle (17458): at android.os.Bundle.getString (Bundle.java:1061) 09-03 19: 26: 22.736: W / Bundle (17458): at android.content.Intent.getStringExtra (Intent.java:4466) 09-03 19: 26: 22.736: W / Bundle (17458): at com.facebook.AuthorizationClient $ KatanaLoginDialogAuthHandler.tryAuthorize (AuthorizationClient. Java: 821) 09-03 19: 26: 22.736: W / Bundle (17458): at com.facebook.AuthorizationClient.tryCurrentHandler (AuthorizationClient.java:272)

Введите описание изображения здесь


09-02 22: 55: 04.110: E / AndroidRuntime (13287): FATAL EXCEPTION: main 09-02 22: 55: 04.110: E / AndroidRuntime (13287): java.lang.RuntimeException: не удается возобновить активность {com.good .amrfbintegration / com.facebook.LoginActivity }: java.lang.NullPointerException 09-02 22: 55: 04.110: E / AndroidRuntime (13287): at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3036) 09-02 22 : 55: 04.110: E / AndroidRuntime (13287): at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3077) 09-02 22: 55: 04.110: E / AndroidRuntime (13287): at android.app.ActivityThread. handleLaunchActivity (ActivityThread.java:2373)

Введите описание изображения здесь

Вот что я сделал до сих пор

Обновлено приложение на Facebook со следующей информацией (я использовал hashkey, сгенерированный с помощью хранилища отладки моего компьютера)

Введите описание изображения здесь

Вот соответствующая информация из моего файла манифеста (@ string / app_id – это идентификатор приложения из портала facebook dev)

Введите описание изображения здесь

Я добавил ссылку на SDK на свой проект таким образом

Введите описание изображения здесь

Вот код в моем методе OnCreate основной деятельности

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); activity = this; Session.openActiveSession(this, true, new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { if (session.isOpened()) { Toast.makeText(activity, "Connected to Fb", Toast.LENGTH_SHORT).show(); } }}); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); } 

При выполнении Session.openActiveSession logcat отображает ошибку, показанную на моем первом снимке экрана.

Метод вызова Session.StatusCallback () запускается один раз (в то время как сеанс имеет состояние «открытие»), но приложение сбрасывает последующее время. Вот что я вижу перед сбоем приложения

Введите описание изображения здесь

Будем очень благодарны любой помощи!

Solutions Collecting From Web of "Facebook Android SDK & java.lang.NullPointerException"

Эта проблема из-за Facebook SDK, пожалуйста, загрузите и используйте Facebook SDK 3.5.2 с этого URL-адреса: https://developers.facebook.com/docs/android/

Да. Проверьте свой код,

Убедитесь, что у вас есть эти вещи на Manifest.xml

 <activity android:name="com.facebook.LoginActivity"/> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/> 

И @ string / app_id должен содержать app_id, который вы получаете из сведений о конфигурации вашего приложения в facebook. Также там вы должны поставить правильный keyhash.

Поэтому убедитесь,

  1. Правильный хэш ключа
  2. Вы правильно настроили приложение в Интернете и позаботились о том, чтобы установить идентификатор приложения в конфигурацию вашего приложения.

Это случилось и со мной сегодня.

Моя проблема заключалась в том, что приложение Facebook было в режиме песочницы. Так что только разработчики и тестеры могли бы использовать его.

Измените его со страницы свойств разработчика Facebook вашего приложения: https://developers.facebook.com/apps

Также нашел свой ответ здесь: не удается получить доступ к сеансу Facebook – UnknownError: неверное приложение

 // Just write your code in onResume() rather than onCreate(). @Override public void onResume() { super.onResume(); if(Session.getActiveSession()==null){ session = new Session(this); Session.setActiveSession(session); } if (Session.getActiveSession().isOpened()) { Toast.makeText(activity, "Connected to Fb", Toast.LENGTH_SHORT).show(); }else{ Session.openActiveSession(this, true, new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { if (session.isOpened()) { Toast.makeText(activity, "Connected to Fb", Toast.LENGTH_SHORT).show(); } }}); } } } 

Я выкопал бит в SDK (3.5), и кажется, что EXTRA_PROTOCOL_VERSION всегда хранится как целое, а не как строка. Т.е. в NativeProtocol.java:

  public static Intent createPlatformActivityIntent(Context context, String action, int version, Bundle extras) { Intent intent = new Intent() .setAction(INTENT_ACTION_PLATFORM_ACTIVITY) .setPackage(FACEBOOK_PACKAGE) .addCategory(Intent.CATEGORY_DEFAULT) .putExtras(extras) .putExtra(EXTRA_PROTOCOL_VERSION, version) //version --> int .putExtra(EXTRA_PROTOCOL_ACTION, action); return validateKatanaActivityIntent(context, intent); } public static Intent createPlatformServiceIntent(Context context) { Intent intent = new Intent(INTENT_ACTION_PLATFORM_SERVICE) .setPackage(FACEBOOK_PACKAGE) .addCategory(Intent.CATEGORY_DEFAULT); return validateKatanaServiceIntent(context, intent); } public static Intent createLoginDialog20121101Intent(Context context, String applicationId, ArrayList<String> permissions, String audience) { Intent intent = new Intent() .setAction(INTENT_ACTION_PLATFORM_ACTIVITY) .setPackage(FACEBOOK_PACKAGE) .addCategory(Intent.CATEGORY_DEFAULT) .putExtra(EXTRA_PROTOCOL_VERSION, PROTOCOL_VERSION_20121101) // PROTOCOL_VERSION_20121101 --> int .putExtra(EXTRA_PROTOCOL_ACTION, ACTION_LOGIN_DIALOG) .putExtra(EXTRA_APPLICATION_ID, applicationId) .putStringArrayListExtra(EXTRA_PERMISSIONS, ensureDefaultPermissions(permissions)) .putExtra(EXTRA_PROTOCOL_CALL_ID, generateCallId()) .putExtra(EXTRA_WRITE_PRIVACY, ensureDefaultAudience(audience)); return validateKatanaActivityIntent(context, intent); } 

И в том месте, где разработчики обычно получают эту ошибку, читается как строка (AuthorizationCLient.java l: 820):

 addLoggingExtra(EVENT_EXTRAS_PROTOCOL_VERSION, intent.getStringExtra(NativeProtocol.EXTRA_PROTOCOL_VERSION)); 

В любом случае это не сработает, так что это все еще ошибка в SDK. Просто в некоторых случаях этот сегмент выполняется.

Любые комментарии?

Я получал ту же ошибку, google'd много вещей, и, наконец, это то, что я сделал, чтобы уйти от этой ошибки

  private void getHashKey() { PackageInfo info; try { info = getPackageManager().getPackageInfo("Your_Package_Name", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) {MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); //String something = new String(Base64.encode(md.digest(), 0)); String something = new String(Base64.encode(md.digest(),0)); Log.e("** Hash Key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e){ Log.e("exception", e.toString()); } } 

Итак, я использовал Hash_Key, сгенерированный этим кодом, и обновил его в консоли разработчика facebook. Это решило мою проблему. Вероятно, некоторые проблемы с окнами key_gen или андроид key_store

Кроме того, проверьте файл AuthorizationClient.java на Facebook Sdk по строке 820

 addLoggingExtra(EVENT_EXTRAS_PROTOCOL_VERSION,"" + intent.getIntExtra(NativeProtocol.EXTRA_PROTOCOL_VERSION, 0)); 

Я добрался до « getIntExtra », где у меня получилось « getStringExtra ». Сделав эти изменения, работал на меня. Надеюсь, он тоже сработает для вас.