为什么我不能直接找到对StatusBarManager类的引用?

Ash*_*ngh 5 android statusbar

要在Android中动态拖动通知区域,唯一的解决方案就是这样

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

这非常有效,但为什么反射的肮脏呢?为什么我不能直接找到对StatusBarManager类的引用?为什么"状态栏"服务的Context类中没有常量?

Com*_*are 14

为什么反思的肮脏?

因为它不是Android SDK的一部分.只有对创建不可靠应用程序感兴趣的人才会尝试与StatusBarManagerAndroid源代码本身的外部进行交互,因为欢迎核心Android团队和设备制造商随时更改SDK之外的任何内容.

为什么我不能直接找到对StatusBarManager类的引用?

因为它不是Android SDK的一部分.@hide由于种种原因,Android框架类中有许多类和方法都标有注释:不愿承诺无限期地支持API,"默默无闻"等等.

为什么"状态栏"服务的Context类中没有常量?

因为它不是Android SDK的一部分.当然欢迎您向AOSP提供补丁,StatusBarManager以便"升级"到与其他系统服务相同的状态(例如LocationManager,NotificationManager).如果StatusBarManager在〜2007年创建SDK之后情况仅仅是一种疏忽,那么您的补丁可能会被接受,您会看到即将推出的Android版本中的更改.