5

これは紛らわしいです。Android 2.2.2_r1 の NotificationManager クラスのソース コードを見ると、 andgetService()として定義されているメソッドが表示されます。ただし、日食は私に言っています:publicstatic

メソッド getService() は、行のタイプ NotificationManager に対して定義されていません

 Object o = NotificationManager.getService();

私のプロジェクトは、Android 2.2/API レベル 8 に対してビルドしています。リフレクションを使用してメソッド名と修飾子を確認しようとしましたが、案の定、戻ってきました

public static getService

ここで何か不足していますか?このメソッドが存在しないとEclipseが教えてくれるのはなぜですか?

4

1 に答える 1

5

この投稿で非常に詳細な回答を見つけることができます。

android.jarつまり、すべての隠しメソッド (アクセスしようとしているメソッドなど) が削除されているに対してコンパイルするためです。それらは、Android の内部使用のために、実行時にのみ存在します。


しかし、おそらくそれも必要なので。にアクセスする正しい方法は、コンテキストのメソッドを使用することですNotificationManagergetSystemService

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

context有効なコンテキストであること (現在のアクティビティなど) 。

于 2012-07-28T20:59:42.600 に答える