CL *_* So 5 reflection android
我找到了扩展通知面板的方法
Object sbservice = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method showsb;
if (Build.VERSION.SDK_INT >= 17) {
showsb = statusbarManager.getMethod("expandNotificationsPanel");
} else {
showsb = statusbarManager.getMethod("expand");
}
showsb.invoke(sbservice);
Run Code Online (Sandbox Code Playgroud)
查看源代码后,我还找到了collapsePanels方法来折叠通知
但我找不到任何方法来检测通知面板状态
因为我想检查它是打开还是关闭,然后决定我应该打开它还是关闭它
我怎样才能知道这个状态?
虽然很晚了但可能对某人有帮助
参考这个
您可以使用以下方法来检测通知面板拉动,
在你的清单文件中
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>在您的活动中覆盖 onWindowFocusChanged() 并编写以下代码。
这使用了权限
Run Code Online (Sandbox Code Playgroud)@Override public void onWindowFocusChanged(boolean hasFocus) { try { if(!hasFocus) { Object service = getSystemService("statusbar"); Class<?> statusbarManager = Class.forName("android.app.StatusBarManager"); Method collapse = statusbarManager.getMethod("collapse"); collapse .setAccessible(true); collapse .invoke(service); } } catch(Exception ex) { if(!hasFocus) { try { Object service = getSystemService("statusbar"); Class<?> statusbarManager = Class.forName("android.app.StatusBarManager"); Method collapse = statusbarManager.getMethod("collapse"); collapse .setAccessible(true); collapse .invoke(service); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } ex.printStackTrace(); } } }
| 归档时间: |
|
| 查看次数: |
2909 次 |
| 最近记录: |