在我的应用程序中,我存储敏感用户数据(如银行详细信息),用户可以使用单独的密码锁定每个详细信息。我希望用户在安装后第一次运行应用程序后立即设置主密码,以便他可以通过输入此主密码来恢复数据,以防他忘记密码。
因此,当应用程序在安装后第一次运行时,会弹出一个弹出窗口,要求他设置主密码,用户需要设置密码才能继续。
但是,当手机重启后或者关闭应用程序后启动应用程序时,他不应该弹出窗口。
在安装后第一次运行应用程序时,弹出窗口应该只出现一次。
假设setMasterPassword()
是创建对话框的函数,我在第一次运行时在哪里调用此函数?
android是否有任何参数来确定该应用程序是否已重新安装?
或者我应该只使用偏好变量来检查这个? {喜欢的东西初始化在PreferenceVariable计数器为0,然后检查的onCreate(此值),并调用setMasterPassword()当且仅当计数器为0,然后递增1的计数器,这样它就不会被再次调用。}
最好的方法是什么?
提前致谢!
答案 0 :(得分:2)
我还试图弄清楚是否有一个“全新安装”布尔值,但似乎没有这样的东西,所以你应该选择共享偏好,就像民间做here一样。
PS:顺便说一句,这是该问题的重复。PS2:请记住,如果用户删除了您应用程序的所有存储信息,该检查也将被删除,因此您将能够再次输入。
如何改善信息安全:
substr()
就足够了)。如果它们是相同的,那么抓住信息。如果他们不是,请再次提示。这样,您可以获得一些好处:
答案 1 :(得分:2)
在某个地方找到这个代码,它对我来说很完美。 所以,我认为这对你也有帮助。
看看。
使用 SharedPreference 存储第四个值,并根据该值检入启动活动。如果设置了该值,则无需显示该对话框。如果是,则显示对话框并在SharedPreference中保存firstrun标志。
在您的MainActivity中:
public void onCreate(){
boolean firstrun = getSharedPreference("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true);
if (firstrun){
[[ ...Display the dialog ]]
// Save the state
getSharedPreference("PREFERENCE", MODE_PRIVATE)
.edit()
.putBoolean("firstrun", false)
.commit();
}
}
答案 2 :(得分:1)
因此单通认证的缺点。如果恶意用户设法获取/更改密码,则您放置的机制不会阻止它们。如果信息真的那么敏感,您可能想要启用第二种身份验证机制(安全问题,电子邮件确认等)
答案 3 :(得分:0)
最好的方法是在安装时设置接收器。
<receiver android:name =".CLASSNAME">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
(如果你不熟悉广播,你需要创建一个名为“CLASSNAME”的BroadcastReciever扩展类来接收广播。)
此外,安装referrer将无法正常工作,除非它在市场上出售,因此您可以在模拟虚假安装时遵循此堆栈溢出答案; How to test android referral tracking?
祝你好运。