2012-04-01 10 views
14

मैं एक प्रोजेक्ट बना रहा हूं जहां मेरे पास लॉगिन स्क्रीन है, जिसका उपयोग उपयोगकर्ता के लिए
एप्लिकेशन में लॉगिन करने के लिए किया जाता है। यह लॉगिन स्क्रीन केवल पहली बार दिखाई देनी चाहिए, इसलिए उपयोगकर्ता इसे भर सकता है और लॉग इन कर सकता है, लेकिन जब उपयोगकर्ता दूसरी बार एप्लिकेशन खोलता है तो एप्लिकेशन को मुख्य.एक्टिविटी दिखाना चाहिए। Shared preference का उपयोग कैसे करें।केवल एक बार लॉगिन स्क्रीन कैसे प्रदर्शित करें?

मुझे समझ में नहीं आता कि यह कैसे करें।

+0

जिस लिंक को आपने हमारे साथ साझा करने का प्रयास किया वह विकृत था। सही लिंक जोड़ने के लिए कृपया अपना प्रश्न संपादित करें। –

उत्तर

30

SharedPreferences साथ इस लक्ष्य को हासिल करने के लिए आप कुछ इस तरह कर सकते हैं:

किसी भी कक्षा आप अधिक फिट देख में निम्नलिखित सम्मिलित करें। मान लीजिए कि आप इसे कक्षा Example में डालें।

//Give your SharedPreferences file a name and save it to a static variable 
public static final String PREFS_NAME = "MyPrefsFile"; 

अब, विधि का मूल्यांकन करता है कि अगर उपयोगकर्ता को सफलतापूर्वक में लॉग में, निम्न करें। Example कक्षा पर ध्यान दें, आपको इसे अपने कोड से मेल खाने के लिए बदलना होगा।

//User has successfully logged in, save this information 
// We need an Editor object to make preference changes. 
SharedPreferences settings = getSharedPreferences(Example.PREFS_NAME, 0); // 0 - for private mode 
SharedPreferences.Editor editor = settings.edit(); 

//Set "hasLoggedIn" to true 
editor.putBoolean("hasLoggedIn", true); 

// Commit the edits! 
editor.commit(); 

अंत में, जब आपके आवेदन अब आप का मूल्यांकन कर सकते ही उपयोगकर्ता पहले में हो या ना किया गया है शुरू होता है। अभी भी Example कक्षा को नोटिस करें जिसे आपको बदलना होगा।

SharedPreferences settings = getSharedPreferences(Example.PREFS_NAME, 0); 
//Get "hasLoggedIn" value. If the value doesn't exist yet false is returned 
boolean hasLoggedIn = settings.getBoolean("hasLoggedIn", false); 

if(hasLoggedIn) 
{ 
    //Go directly to main activity. 
} 

आशा इस मदद करता है

संपादित करें: वापसी बटन का प्रयोग वापस प्रवेश गतिविधि आप finish() लिए एक नया एक शुरू करने के बाद गतिविधि के लिए जाने के लिए से उपयोगकर्ता को रोकने के लिए।

के बाद कोड से Forwarding.java | Android developers

// Here we start the next activity, and then call finish() 
// so that our own will stop running and be removed from the 
// history stack 
Intent intent = new Intent(); 
intent.setClass(Forwarding.this, ForwardTarget.class); 
startActivity(intent); 
Example.this.finish(); 

तो, क्या आप अपने कोड में क्या करना है, प्रवेश गतिविधि पर finish() समारोह कॉल करने के लिए startActivity() बुला के बाद है लिया।

यह भी देखें: Removing an activity from the history stack

+0

यह त्रुटि (उदाहरण। PREFS_NAME, 0) पर त्रुटि दिखाता है; और मुझे इस कोड को किस गतिविधि में जोड़ना होगा? –

+0

@ सांडिपर्मल कृपया मेरा जवाब सावधानीपूर्वक पढ़ें, मैं बताता हूं कि आपको कोड डालने की आवश्यकता है। उस वर्ग से मेल खाने के लिए 'उदाहरण' वर्ग को बदला जाना चाहिए जहां आपने 'PREFS_NAME' स्थिर चर बनाया था। –

+1

अभी भी डेटा भरने के बाद भी लॉगिन पर कूदें। क्या मैं कोड डाल सकता हूँ? –

1

SharedPreferences का उपयोग करें। उदाहरण के लिए, कुछ मान सहेजें, और इसे अपनी लॉगिन गतिविधि पर पढ़ें।

हमारी परियोजना में हम टोकन और उपयोगकर्ता आईडी को सहेजते हैं। इसलिए, यदि उपयोगकर्ता पहले ही लॉग इन है, तो हम प्राधिकरण गतिविधि को छोड़ देते हैं।

पीएस यदि आपकी लॉगिन गतिविधि आपके ऐप में पहला है, तो दूसरी गतिविधियों को शुरू करने से पहले इसे खत्म करना न भूलें, अन्य गतिविधियों में "बैक" कुंजी को दबाए रखने से रोकने के लिए।

+1

जहां मैं इस मान को संग्रहीत करता हूं, किस गतिविधि पर है? –

+0

http://developer.android.com/guide/topics/data/data-storage.html#pref –

1

उपयोग SharedPreferences। उदाहरण के लिए, एक बूलियन वैरिएबल है, और इसे अपने एप्लिकेशन लॉन्च पर पढ़ें। आपके मामले में जब उपयोगकर्ता पहली बार ऐप लॉन्च करता है तो साझा वरीयता में परिवर्तनीय झूठा होगा, इसलिए लॉगिन स्क्रीन लॉन्च करें और सफल लॉगिन के बाद उस बूलियन वैरिएबल को साझा वरीयता में सही करें, ताकि उपयोगकर्ता सेकेंड समय साझा हो सके वरीयता सच होगी। तो लॉगिन स्क्रीन छोड़ें और अपनी मुख्य गतिविधि लॉन्च करें।

संग्रहीत करने के लिए SharedPreference से कोड ::

public static void saveBooleanInSP(Context _context, boolean value){ 
SharedPreferences preferences = _context.getSharedPreferences("PROJECTNAME", android.content.Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putBoolean("ISLOGGEDIN", value); 
editor.commit(); 
}//savePWDInSP() 
getValue करने के लिए

नीचे SharedPreference उपयोग में बूलियन कोड ::

public static boolean getBooleanFromSP(Context _context) { 
// TODO Auto-generated method stub 
SharedPreferences preferences = _context.getSharedPreferences("PROJECTNAME", android.content.Context.MODE_PRIVATE); 
return preferences.getBoolean("ISLOGGEDIN", false); 
}//getPWDFromSP() 
1

आप किसी अन्य खाली गतिविधि (कोई यूआई) के साथ जोड़ना चाहिए कि भार नीचे का उपयोग कुछ और होने से पहले।

@tozka How to Skip the first activity under a condition

द्वारा तर्क इस खाली गतिविधि में @Telmo Marques द्वारा वर्णित है, जो या तो LoginScreen.Activity करने के लिए या Main.Activity करने के लिए उपयोगकर्ता को निर्देशित करने के

यहाँ देख जिम्मेदार है, इस सवाल का जवाब रखो

0

टोकन का उपयोग लॉगिन स्थिति जानने के लिए भी एक अच्छी विधि है। ओथ टोकन आधारित लॉगिन में जब उपयोगकर्ता एप्लिकेशन में लॉगिन करता है तो वे सफल लॉगिन पर पहुंच टोकन वापस ले लेंगे और सुरक्षित प्रबंधक में खाता प्रबंधक में सहेजा जाएगा। और उसके बाद जब भी उपयोगकर्ता एप्लिकेशन खोलता है तो पहले टोकन की उपलब्धता की जांच करें और यदि उपलब्ध लॉगिन पृष्ठ पर मुख्य पृष्ठ पर रीडायरेक्ट उपलब्ध हो ।

संबंधित मुद्दे