0

Я работаю над приложением, и я хочу сделать вход в систему только после выхода его предыдущей сессии, но я не могу этого сделать. когда я закрываю программу и снова ее открываю. он снова направляет на главную страницу, даже если я не выходил из системы. плзВозникли проблемы с управлением сеансами

package in.co.medimap.www.medimap; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.SharedPreferences; 

import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import static in.co.medimap.www.medimap.R.layout.login; 

/** 
* Created by sony on 28-04-2016. 
*/ 
public class login extends Activity { 
TextView signup_text; 
Button login_button; 
EditText PHONE_NO,PASSWORD; 
AlertDialog.Builder builder; 
public static final String MyPREFERENCE ="Myprefs"; 
public static final String PHONE="phone"; 
public static final String PASS="password"; 
SharedPreferences sharedPreferences; 



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



    setContentView(R.layout.login); 
    signup_text=(TextView)findViewById(R.id.sign_up); 
    signup_text.setOnClickListener(new View.OnClickListener(){ 

             @Override 
             public void onClick(View v) { 
              startActivity(new Intent(login.this,register.class)); 
             } 
            }); 
    PHONE_NO=(EditText)findViewById(R.id.phone_no); 
    PASSWORD=(EditText)findViewById(R.id.password); 
    login_button=(Button)findViewById(R.id.login_button); 

    login_button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String ph = PHONE_NO.getText().toString(); 
      String p=PASSWORD.getText().toString(); 


      if (ph.equals("")||p.equals("")) { 

       builder = new AlertDialog.Builder(login.this); 
       builder.setTitle("Something went wrong..."); 
       builder.setMessage("Please fill all the fields..."); 
       builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 


        } 
       }); 
       AlertDialog alertDialog = builder.create(); 
       alertDialog.show(); 
      } 
      else 
      { 
    //see from here 
       sharedPreferences = getSharedPreferences(MyPREFERENCE,Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 

       editor.putString(PHONE, ph); 
       editor.putString(PASS, p); 
       editor.commit(); 

       BackgroundTask backgroundTask = new BackgroundTask(login.this); 
       backgroundTask.execute("login",ph,p); 

      } 







} 
}); 
    } 
} 

это мой homeactivity, где после регистрации пользователь идет и я хочу, что если я не выйти из системы, то всякий раз, когда я открываю мое приложение должно начать отсюда

package in.co.medimap.www.medimap; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class HomeActivity extends Activity { 

Button Logout = null; 

TextView textView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    Logout = (Button) findViewById(R.id.Logout); 
    textView = (TextView) findViewById(R.id.welcome_txt); 
    String message = getIntent().getStringExtra("message"); 
    textView.setText(message); 

    Logout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      SharedPreferences sharedPreferences = getSharedPreferences(login.MyPREFERENCE, Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = sharedPreferences.edit(); 
      editor.clear(); 
      editor.commit(); 
      Intent intent = new Intent(HomeActivity.this,MainActivity.class); 
      startActivity(intent); 



     } 
    }); 




} 
} 
+0

вы не очень понятное описание. пожалуйста, прочитайте ваш вопрос еще раз и постарайтесь уточнить – dhaval

ответ

1

Если вы хотите выйти из системы каждый раз, когда пользователь покидает приложение, почему бы вам просто не сделать это вручную?

вы уже установили кнопку Выйти setOnClickListener так просто сделать это:

@Override 
protected void onPause() { 
    super.onPause(); 
    if(Logout != null) { 
     Logout.callOnClick(); 
    } 
} 

Это означает, что каждый раз, когда пользователь покидает эту деятельность она отключала.
убедитесь, что вы обрабатываете случаи, когда, если они покидают активность, но переходят на другую активность на вашей странице, она не выходит из системы.

=========== =========== EDIT

Я предполагаю, что ваш login деятельность является основным видом деятельности, которая начинается, когда приложение открывает так просто поставить это в onCreate перед выполнением любых других задач. сразу после setContentView, вы должны это сделать.

SharedPreferences sharedPreferences = getSharedPreferences(login.MyPREFERENCE, Context.MODE_PRIVATE); 

String phone = sharedPreferences.getString(PHONE, ""); 
String pass = sharedPreferences.getString(PASS, ""); 

if(!phone.isEmpty() && !pass.isEmpty()) { 
    // this means ID and passwords are already saved so just start your home activity here 
    startActivity(new Intent(context, MainActivity.class)); 
    finish(); 
} 

В вашем MainActivity:

Просто читать значения из SharedPreferences и войти в систему, если вы должны.

Надеюсь, это поможет.

========== EDIT 2

Кроме того, ваш Выход должен выглядеть следующим образом. Не используйте commmit или clear. положить пустые значения и использовать apply

Logout.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     SharedPreferences sharedPreferences = getSharedPreferences(login.MyPREFERENCE, Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putString(PHONE, ""); 
     editor.putString(PASS, ""); 
     editor.apply(); 
     Intent intent = new Intent(HomeActivity.this,MainActivity.class); 
     startActivity(intent); 
    } 
}); 
+0

Я хочу, чтобы пользователь не приходилось регистрироваться каждый раз, когда он открывал мое приложение, если он не выйдет из него. –

+0

OH! Хорошо, теперь я понимаю ваш вопрос. дайте мне минутку. Я исправлю свой ответ –

+0

ok ok thankyou .. –

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