【问题标题】:How to disable statusbar in android?如何在android中禁用状态栏?
【发布时间】:2012-02-07 11:15:50
【问题描述】:

我想在活动中禁用状态栏,我使用下面的代码,它发生 SecurityException, StatusBarManagerService:用户 10049 和当前进程都没有 android.permission.STATUS_BAR。我添加了<uses-permission android:name="android.permission.STATUS_BAR">,但它不起作用?有谁知道如何解决这个问题?谢谢

mStatusBar = getSystemService("statusbar");

if (mStatusBar != null){
    Log.v("statusbar", "get status bar service "+mStatusBar.getClass());
    Method[] arrayOfMethods;
    Method localMethod;
    arrayOfMethods = mStatusBar.getClass().getMethods();
    for (int i = 0; i < arrayOfMethods.length; i++){
        localMethod = arrayOfMethods[i];
        Log.v("statusbar", "find status bar method "+localMethod);
        if (localMethod.getName().equalsIgnoreCase("collapse")){
//                    mStatusBarCollapseMethod = localMethod;
            } else if (localMethod.getName().equals("disable")){
                try {
                    Log.v("statusbar", "invoke "+mStatusBar+"."+localMethod.getName()+"(1)");
                    localMethod.invoke(mStatusBar, 1);
                    Log.v("statusbar", "disable statusbar");
                } catch (Exception e) {
                    Log.v("statusbar", "disable statusbar excption:"+e.toString());
                    e.printStackTrace();
                }
            }
        }
    }
}

【问题讨论】:

标签: android permissions statusbar


【解决方案1】:

如果您需要从您的 java 代码中禁用状态栏,那么您可以这样做:

Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

【讨论】:

    【解决方案2】:

    简单的解决方案,只需将android:theme=”@android:style/Theme.NoTitleBar.Fullscreen” 添加到您的清单中,例如:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="de.vogella.android.temperature"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".Convert"
                      android:label="@string/app_name"
                       android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
        </application>
        <uses-sdk android:minSdkVersion="9" />
    
    </manifest>
    

    【讨论】:

    • 我设置了全屏主题。但是我当我调用 public void onAttachedToWindow() { if (!mInPreviewBool​​ean){ this.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//用于捕获主键 } super.onAttachedToWindow(); } 然后状态栏就会变得可见,我的实现是一个锁屏活动,所以想要活动是全屏的,状态栏是不可见的或禁用的。我添加了权限 android.permission.EXPAND_STATUS_BAR,然后我可以访问 statusbar.collapse(),但即使我添加了 android.permission.STA
    • 当您从顶部挡板向下滑动时,这仍然允许访问通知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多