我正在尝试创建一个Android应用程序,我将通过发送验证码并重定向用户在移动应用程序中输入代码来验证用户的电子邮件地址。
在这种情况下,您能解释一下我如何维护用户已验证其邮件ID的记录。我面临的问题是,当我将这些细节存储在共享首选项中时,当用户退出应用程序时,细节会被删除。因此,系统会提示用户多次输入验证码
每当用户退出我的应用程序时,用户也会自动注销。我将用户详细信息存储在共享首选项中。因此,无论何时启动应用程序,它都会要求登录。您能否解释一下如何让用户保持登录状态,直到用户自己选择退出为止。
有没有办法在不使用Sqlite数据库的情况下实现这些细节???
答案 0 :(得分:0)
将状态保存在缓存文件中。为了那个原因
创建InternalStorage.java
public final class InternalStorage{
private InternalStorage() {}
public static void writeObject(Context context, String key, Object object) throws IOException {
FileOutputStream fos = context.openFileOutput(key, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(object);
oos.close();
fos.close();
}
public static Object readObject(Context context, String key) throws IOException,
ClassNotFoundException {
FileInputStream fis = context.openFileInput(key);
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
return object;
}
}
现在第一次验证后,在缓存中创建一个状态为的文件
try {
// Save the status like verified
InternalStorage.writeObject(this, "cache_fileName", "verified");
} catch (IOException e) {
Log.e(TAG, e.getMessage());
} catch (ClassNotFoundException e){
Log.e(TAG, e.getMessage());
}
在MainActivity的OnCreate方法中,检查缓存文件值,如果文件的值=“已验证”,则启动您要去的活动
/*Check For status From Cache File*/
try {
// Retrieve the file value
verify= (String) InternalStorage.readObject(this, "cache_fileName");
} catch (IOException e) {
Log.e("TAG", e.getMessage());
} catch (ClassNotFoundException e) {
Log.e("TAG", e.getMessage());
}
try{
if(verify.equals("verified")){
startActivity("specify_your_activity");
}
}catch (NullPointerException e){
}
并将其放入AndroidManifest文件
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />