5

Androidで通知領域を動的にドラッグダウンするには、唯一の解決策はこれです

    Object sbservice = getSystemService( "statusbar" );
    Class<?> statusbarManager = Class.forName( "android.app.StatusBarManager" );
    Method showsb = statusbarManager.getMethod( "expand" );
    showsb.invoke( sbservice );

これは素晴らしく機能しますが、なぜリフレクションの不快感が生じるのでしょうか? StatusBarManager クラスへの参照が直接見つからないのはなぜですか? 「ステータスバー」サービスの Context クラスに定数がないのはなぜですか?

4

2 に答える 2

14

なぜ反省を伴う意地悪なのですか?

これは Android SDK の一部ではないためです。信頼性の低いアプリを作成することに興味がある人だけが、Android ソース コード自体の外部と対話しようとしますStatusBarManager。なぜなら、コア Android チームとデバイス メーカーは、必要に応じて SDK 以外のものをいつでも変更できるからです。

StatusBarManager クラスへの参照が直接見つからないのはなぜですか?

これは Android SDK の一部ではないためです。@hideAndroid フレームワーク クラスには、API を無期限にサポートすることをコミットしたくない、「あいまいさによるセキュリティ」など、あらゆる種類の理由で、アノテーションでマークされた非常に多くのクラスとメソッドがあります。

「ステータスバー」サービスの Context クラスに定数がないのはなぜですか?

これは Android SDK の一部ではないためです。AOSP にパッチを提供して、他のシステム サービス (例: 、 ) と同じステータスに "昇格" することは大歓迎StatusBarManagerです。2007 年までに SDK が作成された後の単なる見落としである場合、パッチが受け入れられ、Android の次のバージョンで変更が見られる可能性があります。LocationManagerNotificationManagerStatusBarManager

于 2012-07-04T11:09:55.577 に答える