2016-11-21 2 views
-2

Ich bin eine App, wo Benutzer zuerst über Facebook einloggen, dann geht es zu einer anderen Karte Aktivität.Wenn ich meine App neu starten zeigt es Logout-Taste nicht einloggen oder einfach zu gehen eine weitere Aktivität plus ich möchte E-Mails meiner Kunden speichern. hier ist mein Code -Android speichern Gemeinsame Präferenz und erhalten E-Mail von Benutzer Facebook Login sdk 4

public class MainActivity extends AppCompatActivity { 





private TextView info; 
private LoginButton loginButton; 
private CallbackManager callbackManager; 
SharedPreferences sp; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    FacebookSdk.sdkInitialize(getApplicationContext()); 
    callbackManager = CallbackManager.Factory.create(); 

    setContentView(R.layout.activity_main); 
    sp = getPreferences(MODE_PRIVATE); 
    String access_token = sp.getString("access_token",null); 
    long expires = sp.getLong("access_expires",0); 
    if (access_token != null){ 

    } 




    info = (TextView) findViewById(R.id.info); 
    loginButton = (LoginButton) findViewById(R.id.login_button); 

    List<String> permissionNeeds = Arrays.asList("email", "user_birthday", "public_profile"); 
    loginButton.setReadPermissions(permissionNeeds); 

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 

     @Override 
     public void onSuccess(LoginResult loginResult) { 
      String token = loginResult.getAccessToken().getToken(); 
      Log.d("LOGIN_SUCCESS", "Success"); 
      loginButton.setVisibility(View.INVISIBLE); //<- IMPORTANT 
      Intent intent = new Intent(MainActivity.this,MapsActivity.class); 
      startActivity(intent); 
      finish();//<- IMPORTANT 

     } 


     @Override 
     public void onCancel() { 
      info.setText("Login attempt Canceled"); 


     } 

     @Override 
     public void onError(FacebookException error) { 
      info.setText("Login attempt failed"); 

     } 
    }); 
    AccessTokenTracker accessTokenTracker = new AccessTokenTracker() { 
     @Override 
     protected void onCurrentAccessTokenChanged(
       AccessToken oldAccessToken, 
       AccessToken currentAccessToken) { 
      // Set the access token using `q 
      // currentAccessToken when it's loaded or set. 
     } 
    }; 

} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode,resultCode,data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 




} 




public void imageView (View v) { 

    ImageView img = (ImageView) findViewById(R.id.loofreLogo); 
    if (img != null) { 
     img.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(); 
       intent.setAction(Intent.ACTION_VIEW); 
       intent.addCategory(Intent.CATEGORY_BROWSABLE); 
       intent.setData(Uri.parse("http://www.loofre.com")); 
       startActivity(intent); 
      } 
     }); 
    } 
} 
public void InsOnclick(View args0) { 
    if (args0.getId()==R.id.Bins){ 
     Intent intent = new Intent(this,instructionSlide.class); 
     this.startActivity(intent); 
    } 
} 
public void AboutUs (View args1){ 
    if (args1.getId()==R.id.Babout){ 
     Intent intent = new Intent(this,AboutUs.class); 
     this.startActivity(intent); 
    } 

} 

}

+0

Haben Sie versucht, gemeinsame Einstellungen zu verwenden, um Daten zu speichern? –

+0

@BhaveshMisri Sir ich weiß nicht, wie das geht ... probierte einige Tutorial von youtube und stackoverflow, aber nicht in der Lage, es zu verstehen ... Also muss ich eine andere Aktivität erstellen? für Login ich nur diese Aktivität –

Antwort

0

Um Daten in gemeinsam genutzten Einstellungen zu speichern, ist es das, was Sie tun können:

SharedPreferences preferencesPut = getSharedPreferences("KEY", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("nameKEY", "name"); 
     editor.putString("emailKEY", "email"); 
     editor.putBoolean("done", true); 
     editor.commit(); 

dies wird Ihren Namen und E-Mail speichern. Die Zeichenfolge "KEY" ist ein spezifischer Schlüssel, der angibt, welchen Wert der gemeinsamen Präferenz Sie wissen möchten. Dann werden die Daten aus dem gemeinsamen Vorliebe zurückzuholen:

SharedPreferences preferencesGet = getSharedPreferences("KEY", Context.MODE_PRIVATE); 
String name = preferencesGet.getString("nameKEY", "default"); 
String email = preferencesGet.getString("emailKEY", "default"); 

Sie den Namen und die E-Mail in Strings ‚name‘ und ‚E-Mail‘ bekommen. Sie erhalten den Wert "default", wenn Sie Daten nicht in gemeinsamen Einstellungen speichern können oder nicht abrufen können.

+0

nicht in der Lage, dies in meinem Projekt zu implementieren Hilfe bitte –

+0

sind Sie in der Lage, Name und E-Mail zu holen? Wenn ja, setze sie in den ersten Teil des Codes. Anstelle von "Name" und "E-Mail" geben Sie Ihren Namen und Ihre E-Mail-Adresse ein. –

+0

@Bhaesh Misri folgte dieser Antwort - wird das funktionieren? http://stackoverflow.com/questions/37183258/how-to-get-email-from-facebook-sdk-4-0 –

Verwandte Themen