2016-10-04 64 views
0

我的手機的應用程序需要的功能,能在用戶仍然登錄在它的初始屏幕不會顯示在登錄頁面的任何更多使用共享的偏好。這裏是我參考的代碼。的Android工作室跳過登錄頁面時用戶沒有註銷

飛濺

public class Splash extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash); 
    Thread myThread = new Thread(){ 
     @Override 
     public void run() { 
      try { 
       sleep(2000); 
       Intent in = new Intent (getApplicationContext(),MainActivity.class); 
       startActivity(in); 
       finish(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    myThread.start(); 
    } 
} 

Loginpage(如果用戶沒有註銷,將被跳過的一個)

public class MainActivity extends AppCompatActivity { 

final String TAG = this.getClass().getName(); 
Button btnLogin; 
EditText etUsername, etPassword; 
TextView tvRegister; 
SharedPreferences pref; 
SharedPreferences.Editor editor; 
HashMap<String, String> postData = new HashMap<>(); 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    etUsername = (EditText) findViewById(R.id.etFirstname); 
    etPassword = (EditText) findViewById(R.id.etPassword); 
    btnLogin = (Button) findViewById(R.id.btnLogin); 
    tvRegister = (TextView) findViewById(R.id.tvRegister); 

    pref = MainActivity.this.getSharedPreferences("Login.conf", Context.MODE_PRIVATE); 
    String username = pref.getString("username", ""); 
    String password = pref.getString("password", ""); 

    if (!username.equals("") && (!password.equals(""))) { 
     postData.put("username", username); 
     postData.put("password", password); 
     authenticate(postData); 
    } 

    btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      editor = pref.edit(); 
      editor.clear(); 
      postData.put("username", etUsername.getText().toString()); 
      postData.put("password", MD5.encrypt(etPassword.getText().toString())); 
      editor.commit(); 
      authenticate(postData); 
     } 
    }); 

    tvRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent in = new Intent(MainActivity.this, RegisterActivity.class); 
      startActivity(in); 
     } 
    }); 
} 
private void authenticate(final HashMap<String, String> postData){ 
    PostResponseAsyncTask task1 = new PostResponseAsyncTask(MainActivity.this, postData, 
      new AsyncResponse() { 
       @Override 
       public void processFinish(String s) { 
        Log.d(TAG, s); 
        if (s.contains("renter")) { 
         // Login success, Save to prefs 
         editor = pref.edit(); 
         editor.clear(); 
         editor.putString("username", postData.get("username")); 
         editor.putString("password", postData.get("password")); 
         editor.commit(); 

         Toast.makeText(MainActivity.this, "Renter Login Successful!", Toast.LENGTH_SHORT).show(); 
         Intent in = new Intent(MainActivity.this, RenterTabs.class); 
         startActivity(in); 
         finish(); 

        } else if (s.contains("owner")) { 
         // Login success, Save to prefs 
         editor = pref.edit(); 
         editor.clear(); 
         editor.putString("username", postData.get("username")); 
         editor.putString("password", postData.get("password")); 
         editor.commit(); 

         Toast.makeText(MainActivity.this, "Owner Login Successful!", Toast.LENGTH_SHORT).show(); 
         Intent in = new Intent(MainActivity.this, OwnerTabs.class); 
         startActivity(in); 
         finish(); 
        } else if (s.contains("-1")) { 
         Toast.makeText(MainActivity.this, "Wrong username or password...", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }); 
    task1.execute("http://carkila.esy.es/carkila/authenticate.php"); 
    task1.setEachExceptionsHandler(new EachExceptionsHandler() { 
     @Override 
     public void handleIOException(IOException e) { 
      Toast.makeText(getApplicationContext(), "Cannot Connect to Server", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void handleMalformedURLException(MalformedURLException e) { 
      Toast.makeText(getApplicationContext(), "URL Error", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void handleProtocolException(ProtocolException e) { 
      Toast.makeText(getApplicationContext(), "Protocol Error", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void handleUnsupportedEncodingException(UnsupportedEncodingException e) { 
      Toast.makeText(getApplicationContext(), "Encoding Error", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
} 

,它會去這些類OwnerTabs.javaRenterTabs.java

謝謝你們:)

回答

0

在你保存的用戶名和密碼,以sharedpreferences登錄類,你也應該保存一個布爾值isLoggedIn - 如果登錄成功,如果不是。

然後,你就可以把authenticate方法在飛濺的活動也和使用保存的用戶名和密碼值(如果布爾值爲true)調用它。您應該將authenticate方法提取到單獨的類,並從登錄和註冊中調用它。

如果調用authenticate方法並不重要,如果用戶已經登錄,你可以簡單地檢查isLoggedIn在飛濺的活動,並引導用戶所有者或承租人類。

相關問題