これは、いずれかのタイプ (顔認証、パターン、ピン、パスワード) の画面ロックを有効にしないと実現できません。
リフレクションを通じてルート化されたデバイスで可能です (画面ロックが有効かどうかに関係なく)。アプリには、保護レベルが「signature|system」である「android.permission.STATUS_BAR」権限が必要です。つまり、アプリがプラットフォーム キーで署名されているか、システム アプリケーションである必要があります。
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.disablestatusbar"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.STATUS_BAR" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.disablestatusbar.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity.java:
package com.example.disablestatusbar;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
private Object mStatusBarManager;
private static final String STATUS_BAR_SERVICE = "statusbar";
private static final int DISABLE_NONE = 0x00000000;
private static final int STATUS_BAR_DISABLE_EXPAND = 0x00010000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mStatusBarManager = getSystemService(STATUS_BAR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
disableStatusbarExpand(STATUS_BAR_DISABLE_EXPAND);
}
@Override
protected void onPause() {
super.onPause();
disableStatusbarExpand(DISABLE_NONE);
}
private void disableStatusbarExpand(int what) {
try {
Method disable = mStatusBarManager.getClass().getMethod("disable", int.class);
try {
disable.invoke(mStatusBarManager, what);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
お役に立てれば。