是否可以查询Android设备的年龄?我想知道用户拥有设备的时间。电池的使用年限可能是一个很好的指标,但我找不到合适的API。最佳将是第一个设备启动的时间戳。任何想法?
答案 0 :(得分:1)
没有可靠的方法来确定设备的使用年限,但是我们可以在某种程度上找出年龄。
Android设备与一些预安装的应用程序(Sytem应用程序)打包在一起,当用户拥有它时,他会安装其他应用程序(用户应用程序)。我们可以找出最早安装的用户应用程序的日期,并可以预测设备的使用年限。
*如果设备在使用后已重置,则很难找到设备使用期限。
// @return最早安装应用的日期。
private static String getOldestAppsAge(Context context) {
long appsAge = 0;
try {
appsAge = System.currentTimeMillis();
PackageManager pkgManager = context.getPackageManager();
List<ApplicationInfo> lsApp = pkgManager.getInstalledApplications(0);
for (ApplicationInfo localApplicationInfo : lsApp) {
String pkgName = localApplicationInfo.packageName;
if ((localApplicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
PackageInfo info = pkgManager.getPackageInfo(pkgName, 0);
long firstInstallTime = info.firstInstallTime;
if (firstInstallTime < appsAge && firstInstallTime > sGINGER_RELEASE_DATE) {
appsAge = info.firstInstallTime;
}
}
}
} catch (PackageManager.NameNotFoundException ex) {
ex.printStackTrace();
}
return DateUtils.convertIntoDesiredDateFormat(appsAge);
}
答案 1 :(得分:0)
您可能需要考虑一些困难:
1)大多数Android设备都有(轻松)可拆卸电池。例如,我使用手机时可以使用多个电池。
2)即使在启动时收集了时间戳,如果手机的所有者擦除设备以安装不同的ROM,也可能会删除这些时间戳。
我希望jcollum尝试确定手机型号的解决方案,或者看一下其硬件并确定模型的大致发布日期可能是您最接近的解决方案。我怀疑你在确定实际设备的使用年限时会发现很多准确性。但是,如果有,请纠正我 - 我现在也很好奇!
答案 2 :(得分:0)
这是一个有趣的问题。没有API可以判断设备何时首次购买 - 但您可以查找代理。
这些都不是完美的,但是当用户第一次拿到设备时,它们可以用来设置一些限制。