Trong ứng dụng của tôi có quá trình tải dài và nếu thiết bị đặt trên khóa màn hình, quá trình của tôi sẽ dừng vì một số lý do.Làm thế nào để ngăn chặn khóa màn hình tự động trên Android bằng mã?
Làm cách nào để ngăn thiết bị khóa màn hình tự động?
Trong ứng dụng của tôi có quá trình tải dài và nếu thiết bị đặt trên khóa màn hình, quá trình của tôi sẽ dừng vì một số lý do.Làm thế nào để ngăn chặn khóa màn hình tự động trên Android bằng mã?
Làm cách nào để ngăn thiết bị khóa màn hình tự động?
bạn phải khai báo này sử dụng-phép trên AndroidManifest:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Và trong mã hoạt động của bạn:
PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
wakeLock.acquire();
Chỉ cần nhớ để phát hành khóa này khi ứng dụng của bạn đang bị tạm dừng hoặc bị phá hủy bằng cách thực hiện này:
wakeLock.release();
Thông thường, bạn nên gọi số có được phương pháp bên trong onResume() hoạt động của bạn và phương pháp phát hành trong onPause(). Bằng cách này, chúng tôi đảm bảo rằng đơn đăng ký của chúng tôi vẫn hoạt động tốt trong trường hợp bị tạm dừng hoặc tiếp tục.
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
trong androidmanifest:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
HOẶC
Thực hiện theo this link
Một cách khác để giữ cho màn hình khóa trên mà không cần phải yêu cầu sự cho phép trong manifiest là:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Bạn có đang thực hiện quy trình tải dài trong chuỗi giao diện người dùng không? Một cái gì đó không có vẻ đúng - nếu quá trình này quá lâu đến nỗi thời gian khóa màn hình và quá trình của bạn kết thúc, có lẽ nó cần phải đi trong một dịch vụ nền.
Làm thế nào tôi có thể vô hiệu hóa cờ này một lần nữa nếu tôi muốn? –
Hãy thử getWindow(). ClearFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); – barry
một lựa chọn thú vị mà không được đề cập nhưng là phương pháp
View#setKeepScreenOn(boolean onOff)
. Điều này thực sự có thể được sử dụng động tại bất kỳ thời điểm nào trong thời gian chạy của ứng dụng, ví dụ: để thiết lập chế độ màn hình tùy thuộc vào tình trạng ứng dụng
Go với mã bảo vệ chủ chốt làm việc của mình một cách hoàn hảo,
Chỉ Dán mã vào onCreate Phương pháp trong tập tin MainActivity của bạn Và Permission trong file manifest android
các dòng sau cho phép điện thoại của bạn sẽ được ON khi ứng dụng trong foreground
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
các hướng dẫn sau đây cho phép chúng tôi để vô hiệu hóa t anh khóa màn hình khi nhấn nút khóa.KeyguardLock lớp đã bị phản đối ở mức API 13
/*onCreate*/
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); // Deprecated :/
lock.disableKeyguard();
Và trong biểu hiện của bạn:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
FULL_WAKE_LOCK đã bị phản đối từ API 17, FLAG_KEEP_SCREEN_ON bây giờ là con đường để đi :) –