gpt4 book ai didi

android - 如何检测状态栏的扩展?

转载 作者:太空狗 更新时间:2023-10-29 15:11:48 35 4
gpt4 key购买 nike

我的应用程序允许从我的应用程序启动另一个应用程序。我的所有 Activity 都不显示状态栏。但是当启动其他应用程序(如相机)时,用户可以访问状态栏。因此,我尝试了以下代码 fragment 来折叠服务内的状态栏(因此它每次都会折叠并且代码始终在运行)。

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = null;
if(currentapiVersion <= 16){
collapse = statusbarManager.getMethod("collapse");
}else{
collapse = statusbarManager.getMethod("collapsePanels");
}
collapse.setAccessible(true);
collapse.invoke(service);

现在我只想在用户尝试展开时折叠状态栏?是否存在用于检测状态栏扩展的 Intent 或 Intent 过滤器?

最佳答案

在您的 Activity 中覆盖 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();
}
}
}

关于android - 如何检测状态栏的扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15893208/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com