Не закрывайте вопрос, если у вас нет ответов / Не хотите помочь остаться в стороне
Привет приложение не показывает активность входа, когда она установлена, но когда я очищаю кеш и данные на устройстве и перезапустите приложение, затем оно показывает активность входа в систему, и после входа в систему оно приводит меня к приложению , но я хочу, чтобы оно сначала привело меня к экрану входа в систему и после входа в систему, тогда только оно должно позволить мне go непосредственно на главный экран всякий раз, когда оно запускает приложение, пока оно не выйдет из него
я реализовал двойное нажатие кнопки возврата в качестве выхода. Повлияет ли это на проблему с экраном входа?
В чем моя ошибка, может кто-нибудь сказать мне
Главная страница
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_menu);
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = findViewById(R.id.tabs);
tabs.setupWithViewPager(viewPager);
}
boolean doubleBackToExitPressedOnce = false;
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
finish();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 2000);
}
}
Страница входа
public class LoginPage extends AppCompatActivity {
private FirebaseAuth mAuth;
private Button loginbt;
private EditText emailtxt, passwordtxt;
private final String TAG = "LoginPage";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_page);
emailtxt = findViewById(R.id.Usernamein);
passwordtxt = findViewById(R.id.Passwordin);
loginbt = findViewById(R.id.loginbtn);
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();
loginbt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = emailtxt.getText().toString();
String password = passwordtxt.getText().toString();
if(TextUtils.isEmpty(email) || TextUtils.isEmpty(password)){
Toast.makeText(getApplicationContext(),"Enter Email and Password",
Toast.LENGTH_LONG).show();
return;
}
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(LoginPage.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInWithEmail:success");
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInWithEmail:failure", task.getException());
Toast.makeText(LoginPage.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
@Override
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser != null){
updateUI(currentUser);
}
}
public void updateUI(FirebaseUser currentUser){
Intent intent = new Intent(this, MainMenu.class);
intent.putExtra("email", currentUser.getEmail());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
}
MainFest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.crimerecords">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Add_Criminals"
android:parentActivityName=".MainMenu"/>
<activity
android:name=".MainMenu"
android:theme="@style/AppTheme.NoActionBar"> </activity>
<activity
android:name=".LoginPage"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
</application>
</manifest>
Основным видом деятельности является spla sh экран , после чего он должен возьми меня к экрану входа
public class MainActivity extends AppCompatActivity {
private static int SPLASH_SCREEN_TIME_OUT=2000;
//After completion of 2000 ms, the next activity will get started
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//This method is used so that your splash activity
//can cover the entire screen.
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i=new Intent(MainActivity.this,
LoginPage.class);
//Intent is used to switch from one activity to another.
startActivity(i);
//invoke the SecondActivity.
finish();
//the current activity will get finished.
}
}, SPLASH_SCREEN_TIME_OUT);
}
}