内部アプリケーションで使用するために、ランチャーを作成しました。いくつかのセキュリティ上の理由から、システムバー(パラメータへのアクセス、インストールされたアプリケーションへのアクセスへのオードラー)を非表示にしたいと思います。しかし、私はこれを行う方法がわかりません。使用されるタブレットはroot化されていません。手伝ってくれませんか。
5 に答える
非表示にすることはできませんが、ホーム以外は無効にすることができます。そのために、アプリケーションをホームカテゴリとして指定し、ユーザーに選択させることができます。
<category android:name="android.intent.category.HOME" />
残りはすべて無効にすることができます。
これをマニフェストに追加します。
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
onCreate()内
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_home);
View v = findViewById(R.id.home_view);
v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
ここで、home_viewはxmlファイルの親ビューです。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return false;
}
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)
{
}
}
このコードを使用して非表示にした下部のバーを非表示にできます。
getWindow().getDecorView().setSystemUiVisibility(View.GONE);
キーボードまたはリモートを備えたAndroidボックスにこのコードを使用します。
使用されるタブレットはroot化されていません
その後、それを隠すことはできません。ただしSYSTEM_UI_FLAG_HIDE_NAVIGATION
、一時的に非表示にするために使用できますが、ユーザーが画面に触れると表示されます。
制限があります。ナビゲーションコントロールは非常に重要であるため、ユーザーの操作が最も少ないと、すぐに再表示されます。これが発生すると、このフラグとの両方
SYSTEM_UI_FLAG_FULLSCREEN
が自動的にクリアされるため、両方の要素が同時に再表示されます。
Android 4.0以降では、SYSTEM_UI_FLAG_HIDE_NAVIGATIONフラグを使用してナビゲーションバーを非表示にできます。このスニペットは、ナビゲーションバーとステータスバーの両方を非表示にします。
View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions
以下を参照してください:ナビゲーションバーを非表示にする
これをonCreate()メソッドに入れます。
requestWindowFeature(Window.FEATURE_NO_TITLE);
編集:ステータスバーを非表示にするには、アプリケーションを全画面表示にするか、ルート化する必要があります。