5

这令人困惑。我正在查看NotificationManager 类的 Android 2.2.2_r1 源代码,我看到了getService()定义为publicand的方法static。但是,日食告诉我:

方法 getService() 未定义为类型 NotificationManager 上线

 Object o = NotificationManager.getService();

我的项目是针对 Android 2.2/ API Level 8 构建的。我尝试使用反射来查看方法名称和修饰符,果然,我回来了

public static getService

我在这里错过了什么吗?为什么eclipse会告诉我这个方法不存在?

4

1 回答 1

5

您将在这篇文章中找到非常详细的答案。

简而言之:因为您针对 进行编译android.jar,它删除了所有隐藏的方法(例如您尝试访问的方法)。它们只会在运行时出现,供内部 android 使用。


但既然你也许也需要它。访问的正确方法NotificationManager是通过getSystemService上下文的方法:

NotificationManager nm = (NotificationManager)ctx.getSystemService(Context.NOTIFICATION_SERVICE);

作为context一个有效的上下文(比如你当前的活动)。

于 2012-07-28T20:59:42.600 回答