需要权限:
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
状态栏下拉:
/**
* 展开通知栏
* @param context
*/
public static void expandNotification(Context context) {
Object service = context.getSystemService("statusbar");
if (null == service)
return;
try {
Class<?> clazz = Class.forName("android.app.StatusBarManager");
int sdkVersion = android.os.Build.VERSION.SDK_INT;
Method expand = null;
if (sdkVersion <= 16) {
expand = clazz.getDeclaredMethod("expand");
} else {
/*
* Android SDK 16之后的版本展开通知栏有两个接口可以处理
* expandNotificationsPanel()
* expandSettingsPanel()
*/
//expand =clazz.getMethod("expandNotificationsPanel");
expand = clazz.getDeclaredMethod("expandSettingsPanel");
}
expand.setAccessible(true);
expand.invoke(service);
} catch (Exception e) {
// //e.printStackTrace();
}
}
注意:expandNotificationsPanel为状态栏下拉,可以查看通知;expandSettingsPanel方法会把整个状态栏展开。想要深入研究的可以去看看源码,这两个方法位于源码中:frameworks/base/services/core/java/com/android/server/statusbar/StatusBarManagerService.java