Android应用程序首次运行

时间:2012-08-08 18:01:10

标签: android

在我的应用程序中,我存储敏感用户数据(如银行详细信息),用户可以使用单独的密码锁定每个详细信息。我希望用户在安装后第一次运行应用程序后立即设置主密码,以便他可以通过输入此主密码来恢复数据,以防他忘记密码。

因此,当应用程序在安装后第一次运行时,会弹出一个弹出窗口,要求他设置主密码,用户需要设置密码才能继续。

但是,当手机重启后或者关闭应用程序后启动应用程序时,他不应该弹出窗口。

在安装后第一次运行应用程序时,弹出窗口应该只出现一次。

假设setMasterPassword()是创建对话框的函数,我在第一次运行时在哪里调用此函数?

android是否有任何参数来确定该应用程序是否已重新安装?

或者我应该只使用偏好变量来检查这个? {喜欢的东西初始化在PreferenceVariable计数器为0,然后检查的onCreate(此值),并调用setMasterPassword()当且仅当计数器为0,然后递增1的计数器,这样它就不会被再次调用。}

最好的方法是什么?

提前致谢!

4 个答案:

答案 0 :(得分:2)

我还试图弄清楚是否有一个“全新安装”布尔值,但似乎没有这样的东西,所以你应该选择共享偏好,就像民间做here一样。

PS:顺便说一句,这是该问题的重复。

PS2:请记住,如果用户删除了您应用程序的所有存储信息,该检查也将被删除,因此您将能够再次输入。

如何改善信息安全:

  1. 存储用户的信息以及一些控制字节(随机数,特定字符串等),并使用用户密码对其进行加密。
  2. 只要您需要用户的信息,请抓取该文件,尝试使用用户密码解密其内容(每次询问)
  3. 检查控制字节(可能是substr()就足够了)。如果它们是相同的,那么抓住信息。如果他们不是,请再次提示。
  4. 这样,您可以获得一些好处:

    • 您不会将用户密码存储在任何位置。 SharedPreferences不会存储它,只是“firstTime”变量。
    • 如果用户转储了应用程序的信息,再次输入密码将不会减少您的信息。
    • 从资源管理器中打开该文件只会显示一堆数字,符号以及可能不可读的字节,这些字节几乎会破坏编辑器。

答案 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?

祝你好运。