Cuối cùng tôi đã tìm ra giải pháp cho vấn đề trên. Thay đổi onWindowFocus Tôi vừa đóng hộp thoại do hệ thống tạo ra và vấn đề của tôi đã được giải quyết. bên dưới là mã mẫu.
@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);
}
}
Cập nhật:
Trong Điện thoại di động để ngăn chặn thanh trạng thái mà xuất hiện trên swipe xuống về việc sử dụng màn hình bên dưới đường.
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" boolean được đặt đúng khi ứng dụng ở trạng thái Tạm dừng.
Nguồn
2015-11-17 18:34:05
Bạn có nhận được các tác vụ gần đây trong kẹo que không? Bởi vì đó cũng sẽ là một vấn đề cho bạn, tôi đã trải qua tình huống này rồi. – Androider
@Androider không phải là vấn đề. Tôi đang tìm tùy chọn cài đặt. Điều đó hoàn toàn bị tắt trong ứng dụng surelock. Bạn có bất kỳ ý tưởng về điều đó? –
thêm chế độ xem trên thanh hệ thống – Androider