2016-04-20 14 views
-1

私のメインページはFacebookのログインアクティビティで、ナビゲーションドロワに進みます。すべて正常に機能しますが、アプリを開くたびにLogInする必要があります。 Iveは共有された先験的なことやアクセスを試みた。私はこのコードでそれを行う方法を知らない。 Pls hlp私。このコードにユーザーデータ(共有設定)を保存するにはどうすればよいですか?

これは私のMain.java

public class Main extends AppCompatActivity { 
CallbackManager callbackManager; 
LoginButton loginButton; //facebookLoginButton 


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

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

    setContentView(R.layout.activity_main); 

    loginButton = (LoginButton) findViewById(R.id.login_button); 
    assert loginButton != null; 
    loginButton.setReadPermissions("email"); 

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult login_result) { 

      getUserInfo(login_result); 
     } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException exception) { 

     } 
    }); 
} 

protected void getUserInfo(LoginResult login_result){ 

    GraphRequest data_request = GraphRequest.newMeRequest(
      login_result.getAccessToken(), 
      new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(
         JSONObject json_object, 
         GraphResponse response) { 

        Intent intent = new Intent(Main.this,HomeActivity.class); 
        intent.putExtra("jsondata",json_object.toString()); 
        startActivity(intent); 
       } 
      }); 
    Bundle parameter = new Bundle(); 
    parameter.putString("fields", "id,name,email,picture.width(150).height(150)"); 
    data_request.setParameters(parameter); 
    data_request.executeAsync(); 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
    Log.e("data", data.toString()); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 

} 

@Override 
protected void onPause() { 
    super.onPause(); 

} 
} 

ヘルプPLSのです。

+0

そうすることができます!!!! –

+0

http://blog.nkdroidsolutions.com/arraylist-in-sharedpreferences/チュートリアルに従ってください!! –

+0

新しい質問をしながら他の質問で検索することができます。 stackoverflowとgoogleの両方でこのクエリの結果は非常に多くあります –

答えて

0

実際にFacebook SDKには必要なものすべてが保存されています。たとえば、ユーザがnullのアクセストークンをチェックしてログインしているかどうかを確認できます。 AccessToken.getCurrentAccessToken()は、ユーザーがログインしていない場合はnullを返します。プロファイル情報を保存する必要はありません。SDKはすでにそれを実行しています。たとえば、Profile.getCurrentProfile()を呼び出すと、現在ログインしているユーザーに関する基本情報を取得できます。

4

データを保存あなたのOnCreate()

sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 

に可変

SharedPreferences sharedpreferences; 

を初期化するには、

SharedPreferences.Editor editor = sharedpreferences.edit(); 
     editor.putString("name", name); 
     editor.putString("phone", phone); 
     editor.commit(); 

共有を取得設定は、データ

SharedPreferences settins = PreferenceManager 
     .getDefaultSharedPreferences(Youractivity.this); 
    String pref1=settings.getString("name", "anon"); 
    String pref2=settings.getString("Phone", "anon"); 
を保存しました
0

保存したりアクセスしたりするときは、共有設定に名前を付けることをお勧めします。これは複数の共有設定の場合に役立ちます。あなたが保存されている活動に

、タイプ:あなたがアクセスしている活動に

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref1", MODE_PRIVATE); 
editor = pref.edit(); 
editor.putString("firstName",firstName); 
editor.commit(); 

、タイプ:

SharedPreferences prefs = getApplicationContext().getSharedPreferences("MyPref1", Context.MODE_PRIVATE); 
String firstName = prefs.getString("firstName", "null"); 
関連する問題