2015-10-24 2 views
0

как заголовок предлагаю, чтобы мое приложение оставалось в системе даже после того, как пользователь его закрыл; я не знаю, как достичь этого
это мой код:
Добавить Prefrences to facebook sdk LoginButton

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    callbackManager = CallbackManager.Factory.create(); 
    setContentView(R.layout.activity_main); 
    prfpic = (ImageView) findViewById(R.id.profpic) ; 
    wel = (TextView) findViewById(R.id.WELCOME); 
    Info = (TextView) findViewById(R.id.info); 
    Info.setText("You Must Login To Use All The Features!"); 
    loginButton = (LoginButton) findViewById(R.id.login_button); 
    List<String> permission=new ArrayList<String>(); 
    permission.add("user_likes"); 
    permission.add("user_videos") ; 
    permission.add("user_posts") ; 
    AfterSTRING = "" ; 
    loginButton.setReadPermissions(permission); 
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      actk = loginResult.getAccessToken(); 

      GraphRequest request = GraphRequest.newMeRequest(
        actk, 
        new GraphRequest.GraphJSONObjectCallback() { 
         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) { 
          // Insert your code here 
          try { 
           wel.setVisibility(View.VISIBLE); 
           prfpic.setVisibility(View.VISIBLE); 
           wel.setText("Welcome " + object.getString("name")); 
           Picasso.with(getApplicationContext()) 
             .load(object.getJSONObject("picture").getJSONObject("data").getString("url")).into(prfpic); 
          Info.setText("Hello"); 

          }catch(Exception e) { 
          } 
         } 
        }); 

      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "name,picture.type(large){url}"); 
      request.setParameters(parameters); 
      request.executeAsync(); 
     } 

     @Override 
     public void onCancel() { 
      Toast.makeText(MainActivity.this, "Login Cancelled!!", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onError(FacebookException e) { 
      Toast.makeText(MainActivity.this, "Error! Please Ary Again!!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    } 

теперь вопрос заключается в том, чтобы добавить предпочтения, так что пользователь будет оставаться в системе, пока он не выход из системы

+0

Эй @Jam Установить куки в вашем коде –

ответ

0

Вот мой код, чтобы сделать это:

Я сделал класс SessionManagerFacebook:

import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 

import com.uigtc.crazyapp.Activities.LoginActivity; 
import com.uigtc.crazyapp.Activities.MainActivity; 

import java.util.HashMap; 

public class SessionManagerFacebook { 
// Shared Preferences 
SharedPreferences pref; 

// Editor for Shared preferences 
Editor editor; 

// Context 
Context _context; 

// Shared pref mode 
int PRIVATE_MODE = 0; 

// Sharedpref file name 
private static final String PREF_NAME = "AppFacebook"; 

// All Shared Preferences Keys 
private static final String IS_LOGIN = "IsLoggedIn"; 
public static final String KEY_LANG = "lang"; 

// Email address (make variable public to access from outside) 
public static final String KEY_EMAIL = "email"; 

// Constructor 
public SessionManagerFacebook(Context context) { 
    this._context = context; 
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
    editor = pref.edit(); 
} 

/** 
* Create login session 
*/ 
public void createLoginSession(String email, String lang) { 
    // Storing login value as TRUE 
    editor.putBoolean(IS_LOGIN, true); 
    editor.putString(KEY_LANG, lang); 
    editor.putString(KEY_EMAIL, email); 
    // commit changes 
    editor.commit(); 
} 

public void changeLang(String lang) { 
    editor = pref.edit(); 
    pref.getString(KEY_LANG, lang); 
    editor.apply(); 
} 

/** 
* Check login method wil check user login status 
* If false it will redirect user to login page 
* Else won't do anything 
*/ 
public void checkLogin() { 
    // Check login status 
    if (!this.isLoggedIn()) { 
     // user is not logged in redirect him to Login Activity 
     Intent i = new Intent(_context, LoginActivity.class); 
     // Closing all the Activities 
     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     // Add new Flag to start new Activity 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     // Staring Login Activity 
     _context.startActivity(i); 
    } 

} 


/** 
* Get stored session data 
*/ 
public HashMap<String, String> getUserDetails() { 
    HashMap<String, String> user = new HashMap<String, String>(); 

    user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null)); 
    user.put(KEY_LANG, pref.getString(KEY_LANG, null)); 
    // return user 
    return user; 
} 

/** 
* Clear session details 
*/ 
public void logoutUser() { 
    // Clearing all data from Shared Preferences 
    editor.clear(); 
    editor.commit(); 
    // After logout redirect user to Loing Activity 
    Intent i = new Intent(_context, MainActivity.class); 
    // Closing all the Activities 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    // Add new Flag to start new Activity 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    // Staring Login Activity 
    _context.startActivity(i); 
} 

/** 
* Quick check for login 
**/ 
// Get Login State 
public boolean isLoggedIn() { 
    return pref.getBoolean(IS_LOGIN, false); 
} 
} 

вы можете настроить его, как вы хотите

Тогда на onCompleted метод добавьте следующие строки:

if (!sessionManagerFacebook.isLoggedIn()) { 
           sessionManagerFacebook.createLoginSession(object.getString("email"), getResources().getConfiguration().locale.toString()); 

           //startActivity(new Intent(getActivity(), MainActivity.class)); 
          } else { 
           user = sessionManagerFacebook.getUserDetails(); 
           startActivity(new Intent(getActivity(), MainActivity.class)); 

          } 

теперь вы должны проверить, когда приложение работает, если пользователь вошел в систему или нет, например:

public class SplashScreen extends AppCompatActivity { 
     SessionManagerFacebook sessionManagerFacebook = new SessionManagerFacebook(this); 

if (sessionManagerFacebook.isLoggedIn()) { 
       startActivity(new Intent(SplashScreen.this, MainActivity.class)); 
      } 

    } 
+0

Вы Рок чувак Thaaaaaaaaaaaaaaaanks – jam

+0

Вы можете^_ ^ –

Смежные вопросы