2011年9月15日木曜日

Android コードからステータスバーを開く

Launcher アプリにはステータスバーを開くメニューがある。

該当部分がこれ
  1. public static final String STATUS_BAR_SERVICE = "statusbar";  
  2.   
  3. ...  
  4.   
  5. private void showNotifications() {  
  6.     final StatusBarManager statusBar = (StatusBarManager) getSystemService(STATUS_BAR_SERVICE);  
  7.     if (statusBar != null) {  
  8.         statusBar.expand();  
  9.    }  
  10. }  
StatusBarManager を使う。が、StatusBarManager は @hide である。

よって、これを使いたい場合の方法は、@hide を含む android.jar を使ってアプリを作る or リフレクションする。

例えばリフレクションするならこんな感じ
  1. private void showNotifications() {          
  2.     try {   
  3.         Object service = getSystemService("statusbar");   
  4.         Class<!----> clazz = Class.forName("android.app.StatusBarManager");   
  5.         Method method = clazz.getMethod("expand");   
  6.         method.invoke(service);   
  7.      } catch (Exception e) {   
  8.          e.printStackTrace();  
  9.      }   
  10. }  

ちなみに、AndroidManifest.xml で uses-permission に android.permission.EXPAND_STATUS_BAR が必要。

0 件のコメント:

コメントを投稿