Intentar invocar método virtual 'int java.lang.Object.hashCode ()' en la integración de facebook
Estoy recibiendo el error followin cuando estoy tratando de integración facebook:
11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: Process: com.creaa.admin.mylogin, PID: 23052 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Object.hashCode()' on a null object reference 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:746) 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:774) 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: at com.facebook.internal.Utility.queryAppSettings(Utility.java:822) 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: at com.facebook.login.widget.LoginButton$1.run(LoginButton.java:489) 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 11-18 15:57:54.186 23052-23093/com.creaa.admin.mylogin E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)
Abajo es mi actividad principal:
- Android: Evitar dos inicios de sesión a Facebook (SDK y navegador) al integrar una página "como" botón
- Utilice SyncAdapter para sincronizar con * local * datos de aplicaciones de Gmail y Facebook
- Cómo iniciar sesión en facebook en WebView si ya tiene acceso token de FB SDK en Android
- Error al resolver: com.facebook.android:facebook-android-sdk:4.4.0
- javax.net.ssl.SSLException con Facebook SDK, Android
public class MainActivity extends Activity { private static String APP_ID = "1500167156975715"; // Replace your App ID here CallbackManager callbackManager; ArrayList<String> permissions; Context cv = this; boolean loginflag = false; private ProfileTracker profiletracker; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //initilise fb sdk FacebookSdk.sdkInitialize(getApplicationContext()); //logout any previous logins AccessToken accessToken = AccessToken.getCurrentAccessToken(); accessToken.setCurrentAccessToken(null); Profile.getCurrentProfile().setCurrentProfile(null); LoginManager.getInstance().logOut(); setContentView(R.layout.activity_main); permissions = new ArrayList<String>(); permissions.add("email"); permissions.add("user_likes"); permissions.add("user_friends"); permissions.add("public_profile"); permissions.add("user_birthday"); try { PackageInfo info = getPackageManager().getPackageInfo( "com.example.facebooklogin", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("Parth", "KeyHash : " + Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } callbackManager = CallbackManager.Factory.create(); LoginButton loginbutton = (LoginButton) findViewById(R.id.login_button); loginbutton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (AccessToken.getCurrentAccessToken() != null && Profile.getCurrentProfile() != null) { if (loginflag) { AccessToken accessToken = AccessToken.getCurrentAccessToken(); accessToken.setCurrentAccessToken(null); Profile.getCurrentProfile().setCurrentProfile(null); Toast.makeText(cv, "Logout", Toast.LENGTH_SHORT).show(); LoginManager.getInstance().logOut(); } } else { if (!loginflag) { Toast.makeText(cv, "Login", Toast.LENGTH_SHORT).show(); LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, permissions); } } } }); loginbutton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult result) { // TODO Auto-generated method stub Toast.makeText(cv, "in onSucess", Toast.LENGTH_SHORT).show(); //get account details GraphRequest request = GraphRequest.newMeRequest(result.getAccessToken(), new GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject object, GraphResponse response) { // TODO Auto-generated method stub Log.d("Parth", response.toString() + "\njson" + object.toString()); try { String email = (String) object.get("email"); Toast.makeText(cv, email, Toast.LENGTH_SHORT).show(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,email,gender,birthday"); request.setParameters(parameters); request.executeAsync(); } @Override public void onError(FacebookException error) { // TODO Auto-generated method stub Toast.makeText(cv, "in onError", Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { // TODO Auto-generated method stub Toast.makeText(cv, "in oncancel", Toast.LENGTH_SHORT).show(); } }); profiletracker = new ProfileTracker() { @Override protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) { // TODO Auto-generated method stub if (currentProfile != null) { Toast.makeText(cv, "in Currentprofilechanged", Toast.LENGTH_SHORT).show(); String name = currentProfile.getName(); String fname = currentProfile.getFirstName(); Toast.makeText(MainActivity.this, fname, Toast.LENGTH_SHORT).show(); } } }; } }
A continuación se muestra el gradle de la aplicación:
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.creaa.admin.mylogin" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } repositories { mavenCentral() } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.facebook.android:facebook-android-sdk:4.6.0' }
A continuación se muestra el archivo de manifiesto:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.creaa.admin.mylogin" > <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="1500167156975715"/> <provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider233936543368280" android:exported="true" /> </application> </manifest>
He intentado todas las cosas posibles, pero no puedo resolver el error. Sería muy amable si alguien pudiera ayudarme con este problema. Acabo de cambiar de eclipse a estudio de Android. Este código estaba funcionando en eclipse muy bien, pero no está funcionando en el estudio de Android.
- Tecla de hash de Facebook al usar el estudio de Android
- Botón para compartir facebook / twitter de Android
- Cómo funciona el cierre de sesión en Facebook SDK Android
- ¿Dónde está la constante del código de solicitud (64206) para el inicio de sesión definido en Facebook SDK
- Android - ¿Cómo puedo detectar si el usuario ha decidido compartir con Facebook o Twitter con la intención?
- Enviar notificación de aplicación de Android a facebook mediante la notificación de API de facebook
- Importación de apklib desde github con Maven
- Facebook SDK 4 para Android - cómo cerrar sesión mediante programación
Tengo resolver este problema después de tanto I + D. Lo que necesitas hacer es definir facebook APPID en string.xml y usar esa cadena en metadatos en manifesto bajo etiqueta de aplicación.
String.xml
<string name="facebook_app_id">XXXXXX</string>
Manifest.xml
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
Finalmente averiguó el problema y se le ocurrió la solución, el problema era que el botón de inicio de sesión no pudo localizar el ID de la aplicación de aplicación, sólo tiene que poner la etiqueta meta meta de la aplicación dentro del elemento de etiqueta de la aplicación .. Eso es todo
En Login-manager Callback, compruebe si hay error. En caso afirmativo. Manejarlo
Para cada permiso, se llama a la función de devolución de llamada. Compruebe qué permisos el usuario ha aprobado y procese la información en consecuencia.
Si implementas esto en un fragmento, haz lo siguiente:
loginbutton.setfragment(this)
Espero que esto ayude.
- Spinner que agrega la matriz de la secuencia en la selección del artículo cómo puede conseguir el valor relacionado artículo en androide
- Convertir la cadena de color HEX a color?