Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Java.lang.RuntimeException con Facebook Login ejemplo

Estoy siguiendo la guía de Facebook para hacer una aplicación de inicio de sesión para Android. Después:

  1. Instalar la aplicación de Facebook (innecesaria) en el dispositivo virtual
  2. Importe Facebook SDK en Android Studio como módulo
  3. Importe el módulo anterior al proyecto y
  4. Modifique el código como indica la guía

El proyecto compila. Pero cuando ejecuto la máquina y tratar de abrir la aplicación se bloquea mostrando:

  • Pruebas de la unidad Android con Dagger 2
  • ¿Cómo dejar que un TextView tenga varias líneas?
  • El botón de Android necesita dos clics para la acción
  • Android.widget, textView no se puede convertir en android.widget, botón
  • API de conexión cercana para Android - no funciona para algunos dispositivos
  • Cómo cambiar la clasificación de Android estrellas de la barra?
  • Lamentablemente, la aplicación se ha detenido.

    No pude encontrar una solución después de leer mensajes similares como este y esto .

    Estoy usando Android 0.5.8, Oracle JDK 7 y la API 16 como objetivo , min y max .

    Los archivos principales son activity_main.xml , MainActivity.java y MainFragment.java .

    Aquí está la última salida logcat :

     05-30 03:15:54.127 647-664/com.jdk8.minifacebookloginapp.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:299) at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) at java.util.concurrent.FutureTask.setException(FutureTask.java:124) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) Caused by: java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:781) at com.facebook.internal.Utility.queryAppSettings(Utility.java:372) at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:676) at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:673) at android.os.AsyncTask$2.call(AsyncTask.java:287) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)            at java.util.concurrent.FutureTask.run(FutureTask.java:137)            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)            at java.lang.Thread.run(Thread.java:856) 

  • ¿Es posible escribir verticalmente en una vista de texto en android?
  • Android: el teclado no aparece en la ventana flotante
  • Listview con edittext - desplazamiento automático en "siguiente"
  • Cómo ocultar barras de desplazamiento en Android WebView a través de React Native
  • Android AlertDialog con vista personalizada: obtener datos de entrada
  • ¿Es posible conectar la API de Google Maps a través de proxy inverso en mi aplicación?
  • 3 Solutions collect form web for “Java.lang.RuntimeException con Facebook Login ejemplo”

    El problema no viene de su código, sino del SDK de Facebook. Puede verlo mirando la parte superior de la NullPointerException

     Caused by: java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:781) at com.facebook.internal.Utility.queryAppSettings(Utility.java:372) 

    El error de las dos últimas líneas de disparo son del facebook sdk (com.facebook.internal) y su paquete java.util, ninguno de los cuales proviene de su código.

    Para solucionar esto, necesita finalizar la configuración en el tutorial de inicio de facebook para android en el que registra su aplicación después de generar un hash de clave de android. Después de haberlo hecho, abra su AndroidManifest.xml y añada la línea de metadatos

     <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

    A continuación, agregue su app_id al archivo strings.xml (que se encuentra en la página de configuración de su cuenta de desarrollador de Facebook. El ID de la aplicación está en su cuenta de desarrollador de Facebook.

    Una vez que lo haya hecho, debería compilar

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

    Faltaba en mi caso.

    Necesitas agregar

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

    En el lugar correcto dentro de la aplicación no dentro de la actividad

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.