有没有办法找出应用程序的安装时间?

时间:2014-06-21 04:17:16

标签: java android apk

我想知道设备上已经安装了多长时间。

原因: 我想为很久以前安装了该应用程序的用户宣布该应用程序的新更新,并希望阻止为刚刚安装该应用程序的用户公布此更新。我讨厌自己在应用程序中做广告:-)所以我想谨慎,只为很久以前安装了应用程序的用户显示公告。 (抱歉我的英语不好)

我不想使用的是以下内容,因为这允许我仅从更新的版本中检测到这一点,我实现了它: - 使用谷歌分析。 - 计算房产中appstart的计数器

我正在寻找我现在在2014年实施的解决方案,并检测到自2013年以来安装了应用程序。

任何提示?

2 个答案:

答案 0 :(得分:1)

向前迈进的最简单方法是使用一对SharedPreferences

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(new Context());
boolean firstRun = prefs.getBoolean("IS_FIRST_RUN", true);
long now = System.currentTimeMillis();
if (firstRun)
{
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("IS_FIRST_RUN", false);
    editor.putLong("FIRST_RUN_MILLIS", now);
    editor.apply();
}
else
{
    long dateFirstRun = prefs.getLong("FIRST_RUN_MILLIS", 0L);
    if (dateFirstRun == 0L)
    {
        // no value saved. decide how you want to handle
    }
    else if (now - dateFirstRun < SOME_AGE)
    {
        // offer extra functionality
    }
}

如果您想查看过去的安装信息,我认为您必须使用PackageManager

编辑:正如理查德在上述评论中所说:

try
{
    long firstInstall = context.getPackageManager().getPackageInfo("package.name", 0).firstInstallTime;
}
catch (PackageManager.NameNotFoundException e)
{
    e.printStackTrace();
}

答案 1 :(得分:0)

根据我的经验,如果应用程序在Google Play上,我会使用UrbanAirship,Parse或原始GCM实施等服务与个人服务器注册设备,并能够向每个手机发送推送消息。 我不介意已安装的应用程序,因为设备上的Play商店应用程序会在可用时通知用户有关更新的信息。

现在,如果该应用不在Google Play上,但仍然消耗了api,您可以利用它并发送一次性促销信息以下载具有新功能的新版本:

    //TODO Receive message here

    //check preferences
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    if(!prefs.getBoolean("alreadyAdvertised", false)){
        prefs.edit().putBoolean("alreadyAdvertised", true).commit();
        //TODO display message here

    }

希望它有所帮助。