我认为你可能会缺少所需的权限。请确保您有EXPAND_STATUS_BAR许可,您的Manifest.xml:
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
环顾四周,我发现这个代码:
Object sbservice = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method showsb = statusbarManager.getMethod("expand");
showsb.invoke(sbservice);
你可能想尝试一下。
编辑:
对于实际检测,如果它是关闭或没有,见this answer。这里是什么样子:
覆盖的onWindowFocusChanged()方法,在你的活动与下面的代码:
在权限:
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
压倒一切的:
@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();
}
}
}
丹尼尔,对不起,我的(错误)答案最终在这里获得了赏金。我一直在环顾四周,我一直无法在网上找到答案。我会继续寻找! – 2014-11-30 03:55:22
有没有公共的API来做你想做的。即使你使用反射,它仍然是受限制的 - 正如你发现的那样。 – 2015-07-09 16:18:44