如果我们坚持使用 SDK,我不知道直接提供此信息的方法;但可能有一种方法可以从其他资源中获取这些信息。同样,如果我们坚持使用 SDK,一个“相当可靠”的选项是使用Android 操作系统在设备生命周期内保存的应用程序使用统计信息。那就是 - 保存的第一个“使用统计信息”的时间戳。
但是,这显然没有提供确切的“首次启动时间”时间戳,因此这取决于您的情况是否可以使用某种近似值。一般来说,使用统计的问题在于,Andriod 会在很远的时间段内聚合它——因此,越旧的设备——日期越不准确。例如,对于我目前在 2014 年 12 月 3 日首次启动的手机,汇总的使用统计数据目前首次记录在 2014 年 12 月 21 日(记录在案 - 撰写本文时是 2016 年 2 月)。(我不得不承认,虽然我不知道 Android OS 是如何安排聚合的,以及它是否只是安排在每年的 12 月 21 日,或者它是否确实有点接近第一次设备使用 - 我想这很容易与任何其他设备检查。)
以下是一些示例代码,显示了UsageStatsManager 的使用情况,但它肯定需要更多的调整才能解决最近时期具有更高精确度的事实:
UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
Calendar year2013 = Calendar.getInstance(); year2013.set(2013, 0, 1);
List<UsageStats> stats = usageStatsManager.queryUsageStats(
UsageStatsManager.INTERVAL_YEARLY, // or adjust for "younger" devices to get more precision - so, you'll probably need several queries
year2013.getTimeMillis(),
Calendar.getInstance().getTimeInMillis());
// now, first element in stats (if it is present at all) will point to the "earliest" statistics saved *for this interval* (yearly in this case)
// use UsageStats.getFirstTimeStamp() to get first known/saved usage
另请注意,如 SDK 中所述,UsageStatsManager
需要PACKAGE_USAGE_STATS
系统级权限,因此您需要先让用户在设置中接受它:
Intent settingsIntent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(settingsIntent);
希望能帮助到你!