不能使用公共静态方法?

时间:2012-07-28 20:40:33

标签: java android

这令人困惑。我查看Android 2.2.2_r1 source code for the NotificationManager课程,我看到方法getService()定义为publicstatic。然而,eclipse告诉我:

  

对于NotificationManager类型,未定义getService()方法   在线

 Object o = NotificationManager.getService();

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

public static getService

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

1 个答案:

答案 0 :(得分:5)

您可以在this post找到非常详细的答案。

简而言之:因为您针对android.jar编译,其中包含所有隐藏方法(如您尝试访问的方法)已删除。它们将仅在运行时存在,用于内部Android使用。


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

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

context是有效的上下文(就像您当前的活动一样)。