Android中有許多隱藏的Service,StatusBarManager就是其中一個,在Context.java中可以看到:
[java]
/**
* Use with {@link #getSystemService} to retrieve a {@link
* android.app.StatusBarManager} for interacting with the status bar.
*
* @see #getSystemService
* @see android.app.StatusBarManager
* @hide
*/
public static final String STATUS_BAR_SERVICE = "statusbar";
/**
* Use with {@link #getSystemService} to retrieve a {@link
* android.app.StatusBarManager} for interacting with the status bar.
*
* @see #getSystemService
* @see android.app.StatusBarManager
* @hide
*/
public static final String STATUS_BAR_SERVICE = "statusbar";
表明該service不對外提供,如果要調用的話需要在源碼樹上編譯,才能調用到標記為@hide的介面。也可以將源碼編譯出來的classes.jar包添加到工程裡面。
StatusBarManager提供了一些有用的介面,像disable()方法正是我們需要的,一些系統級的應用也是調用的該方法禁止StatusBar下拉的,比如電話、鎖屏模組。想要調用該方法,你還需要以下許可權:
[html]
<uses-permission android:name="android.permission.STATUS_BAR" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
<uses-permission android:name="android.permission.STATUS_BAR" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
擷取StatusBarManager執行個體,
[java]
mStatusBarManager = (StatusBarManager) mContext.getSystemService(Context.STATUS_BAR_SERVICE);
mStatusBarManager = (StatusBarManager) mContext.getSystemService(Context.STATUS_BAR_SERVICE);
禁止下拉,
[java]
mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
解除禁止,
[java]
mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);