这令人困惑。我查看Android 2.2.2_r1 source code for the NotificationManager课程,我看到方法getService()
定义为public
和static
。然而,eclipse告诉我:
对于NotificationManager类型,未定义getService()方法 在线
Object o = NotificationManager.getService();
我的项目正在针对Android 2.2 / API Level 8构建。我尝试使用反射来查看方法名称和修饰符,果然,我回来了
public static getService
我在这里遗漏了什么吗?为什么eclipse会告诉我这个方法不存在?
答案 0 :(得分:5)
您可以在this post找到非常详细的答案。
简而言之:因为您针对android.jar
编译,其中包含所有隐藏方法(如您尝试访问的方法)已删除。它们将仅在运行时存在,用于内部Android使用。
但是你可能也需要它。访问NotificationManager
的正确方法是通过上下文的getSystemService
方法:
NotificationManager nm = (NotificationManager)ctx.getSystemService(Context.NOTIFICATION_SERVICE);
context
是有效的上下文(就像您当前的活动一样)。