Android 为什么在IDE中无法访问UsageStats.mLaunchCount?

Android 为什么在IDE中无法访问UsageStats.mLaunchCount?,android,usage-statistics,Android,Usage Statistics,我拥有所有权限,可以获取应用程序列表,以及作为UsageStats实例列表的使用情况统计信息。UsageStats有一个名为mLaunchCount的公共字段,添加在API 22上(基于文件的git历史记录)。现在,如果手机运行的是API 22+,我想访问它,但当我尝试使用它时,IDE抱怨无法解析符号mLaunchCount。如果我尝试通过反射来访问它,它就会工作 因此,基本上这并不编译: Log.d("test", "Count: " + usageStat.mLaunchCount); 虽

我拥有所有权限,可以获取应用程序列表,以及作为UsageStats实例列表的使用情况统计信息。UsageStats有一个名为mLaunchCount的公共字段,添加在API 22上(基于文件的git历史记录)。现在,如果手机运行的是API 22+,我想访问它,但当我尝试使用它时,IDE抱怨
无法解析符号mLaunchCount
。如果我尝试通过反射来访问它,它就会工作

因此,基本上这并不编译:

Log.d("test", "Count: " + usageStat.mLaunchCount);
虽然这样做:

Field mLaunchCount = UsageStats.class.getDeclaredField("mLaunchCount");
int launchCount = (Integer)mLaunchCount.get(usageStat);
Log.d("Test", "Count: " + launchCount);
知道发生了什么吗


谢谢

,因为
mLaunchCount
不是Android SDK的一部分。在中,它被标记为
@hide
注释,用于Java原因下的
公共
,但不属于SDK的一部分。

你说得对,这似乎就是原因。我注意到了@hide,但我认为这只是将其从Javadocs中排除,但似乎@hide做的不止这些(),而且它只能通过反射访问@m、 哈希米安:更重要的是,不能保证这个字段会出现在所有相关的安卓版本上,包括那些来自设备制造商和定制ROM开发者的版本。是的,考虑到它可能不存在,必须使用这个字段。