最後に、私は上記の問題の解決策を見出しました。 onWindowFocus change私はシステムで生成されたダイアログを閉じて、問題は解決しました。以下はサンプルコードです。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(!hasFocus)
{// Close every kind of system dialog
Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(closeDialog);
}
}
更新:ダウン方法以下のスクリーン使用上のスワイプに表示されるステータスバーをブロックするモバイルで
。
private Handler collapseNotificationHandler;
@Override
public void onWindowFocusChanged(boolean hasFocus) {
boolean currentFocus = hasFocus;
if (!hasFocus) {
collapseNow(true,currentFocus);
}
}
public void collapseNow(final boolean shouldCollapse, final boolean currentFocus) {
// Initialize 'collapseNotificationHandler'
if (collapseNotificationHandler == null) {
collapseNotificationHandler = new Handler();
}
// If window focus has been lost && activity is not in a paused state
// Its a valid check because showing of notification panel
// steals the focus from current activity's window, but does not
// 'pause' the activity
if (!currentFocus && !isPaused) {
// Post a Runnable with some delay - currently set to 50 ms
collapseNotificationHandler.postDelayed(new Runnable() {
@Override
public void run() {
// Use reflection to trigger a method from 'StatusBarManager'
Object statusBarService = getSystemService("statusbar");
Class<?> statusBarManager = null;
try {
statusBarManager = Class.forName("android.app.StatusBarManager");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Method collapseStatusBar = null;
try {
// Prior to API 17, the method to call is 'collapse()'
// API 17 onwards, the method to call is `collapsePanels()`
if (Build.VERSION.SDK_INT > 16) {
collapseStatusBar = statusBarManager.getMethod("collapsePanels");
} else {
collapseStatusBar = statusBarManager.getMethod("collapse");
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
collapseStatusBar.setAccessible(shouldCollapse);
try {
collapseStatusBar.invoke(statusBarService);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
// Check if the window focus has been returned
// If it hasn't been returned, post this Runnable again
// Currently, the delay is 50 ms. You can change this
// value to suit your needs.
if (!currentFocus && !isPaused) {
collapseNotificationHandler.postDelayed(this, 50);
}
}
}, 0);
}
}
"isPaused"ブール値。アプリケーションが一時停止状態のときにtrueに設定されます。
最近の仕事はロリポップで手に入りましたか?それもあなたにとって問題になるでしょうから、私はすでにこのような状況に遭っています。 – Androider
@Androiderそれは問題ではありません。私は設定オプションを探しています。それは完全ロックアプリケーションでは無効になっています。あなたはそれについて何か考えていますか? –
システム・バーの上にビューを追加する – Androider