我正在编写包含登录facebook功能的应用程序。
此时,我的应用程序可以在登录后跳转到另一个片段(登录后页面) 我用finish();在startActivity(intent)之后;避免用户成功登录后返回登录页面。
然而,我正面临一个新问题。 如果我尝试在登录后页面按回键,它将返回Android的主菜单。听起来不错。但是当我再次尝试打开我的应用程序时,它会再次使用注销按钮启动我的登录页面。 2秒后,它会跳转到我的登录页面。
有什么方法可以阻止这种情况吗? 我希望我的应用程序可以在我尝试重启我的应用程序后直接打开登录后页面,如果用户之前已成功登录。
干杯〜
答案 0 :(得分:1)
在您将默认初始值设为isLoggedIn
后,在Shared Preferences
中设置布尔值false
。
如果登录成功更新isLoggedIn
至true
。
现在,当app重新启动时,请检查isLoggedIn
的值。
如果isLoggedIn
值为true
,请启动帖子后登录活动,否则开始登录活动。
答案 1 :(得分:1)
当然你可以这样做,你可以在这条路径中创建一个文件(在用户登录后):
context.getExternalFilesDir(null).getAbsolutePath()
创建后 - 只需检查应用程序的开头,如果该文件位于用户设备上,并将其链接到您的MainMenu。
如果您在此路径中成功保存了文件(在用户卸载并重新安装应用程序后不再使用loggin,则会阻止。(此工作流程也用于Whatsapp,如果删除数据,则必须再次登录) - 例如,如果有人将智能手机卖给其他用户,他们会重新安装此应用程序,该文件将被自动删除,因此他必须登录或甚至重新注册)
public class InstallCertificate {
private Context context = null;
private File certificate = null;
public InstallCertificate(Context context) {
this.context = context;
}
public void createCertificateAtVerifying() {
try {
certificate = new File(context.getExternalFilesDir(null)
.getAbsolutePath(), "InstallationCertificate");
certificate.createNewFile();
System.out
.println("successfully installed Certificate on cell phone");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean checkIfCertificateIsInstalled() {
boolean certificateExists = false;
certificate = new File(context.getExternalFilesDir(null)
.getAbsolutePath(), "InstallationCertificate");
if (certificate.exists()) {
return true;
}
return certificateExists;
}