2013-11-21 29 views
6

Cách bắt đầu Hoạt động trên thiết bị ngay cả khi màn hình bị khóa. Tôi đã thử như sau nhưng nó không hoạt động.Màn hình Bắt đầu hoạt động ngay cả khi màn hình bị khóa trong Android

Broadcast receiver:

Intent alarmIntent = new Intent("android.intent.action.MAIN"); 
     alarmIntent.setClass(context, Alarm.class); 
     alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     alarmIntent.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED + 
          WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD + 
          WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + 
          WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
     context.startActivity(alarmIntent); 

Trả lời

11

Bạn cần sự cho phép sau trong AndroidManifest.xml file:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 

Kiểm tra các chi tiết biểu hiện here. Bạn có thể kiểm tra điều này link trên truy vấn của bạn.

1

Bạn có thể kiểm tra here về việc màn hình bị khóa hay mở khóa.

Sau đó, bạn có thể sử dụng tùy chọn quản lý khóa và quyền lực để duy trì màn hình mà không bị khóa. bạn có thể tìm giúp here

10

Bạn có thể đạt được điều này theo hai cách:

  1. sử dụng khóa trỗi dậy như được giải thích bởi @Yup trong bài viết này.

  2. sử dụng cờ cửa sổ.

cửa sổ Sử dụng cờ:

Mở Hoạt động Một mà bạn muốn bắt đầu trong onReceive(...). Dán này trong onCreate() của Hoạt động rằng A

final Window win= getWindow(); 
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

Hãy chắc chắn rằng bạn không dán nó trước khi setContentView(...) :-)

+0

nếu tôi sử dụng cách thứ hai (sử dụng cờ cửa sổ), tôi không cần yêu cầu quyền trong androidmanifest.xml? – Dika

+1

Có, bạn không được phép @Dika – Junaid

0
  1. file manifest cho phép sử dụng-phép android: name = "android.permission .WAKE_LOCK " sau đó viết mã bên trong hoạt động yêu cầu của bạn trênCreate()
  2. final Window win = getWindow(); win.addFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Các vấn đề liên quan