2011年9月15日木曜日

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

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

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

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

例えばリフレクションするならこんな感じ private void showNotifications() { try { Object service = getSystemService("statusbar"); Class clazz = Class.forName("android.app.StatusBarManager"); Method method = clazz.getMethod("expand"); method.invoke(service); } catch (Exception e) { e.printStackTrace(); } }
ちなみに、AndroidManifest.xml で uses-permission に android.permission.EXPAND_STATUS_BAR が必要。

0 件のコメント:

コメントを投稿