2016-12-03 2 views

ответ

0

следующее предупреждение диалог был запущен с широковещательным приемником, и он показал, когда экран был helped.Modify, чтобы удовлетворить ваши потребности

//required permissions in manifest 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 

//code in my broadcast 
    @Override 
    public void onReceive(final Context context, final Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      Window window = (Window) context.getSystemService(Context.WINDOW_SERVICE); 
      window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
      window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
      window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag"); 
      wl.acquire(); 
     } 
          AlertDialog alertDialog = new AlertDialog.Builder(context) 
            .setTitle("On lock dialog message") 
            .setMessage(""Notice") 
            .create(); 

          alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 
            | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
            | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
            | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
          alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
          alertDialog.show(); 
} 

надеюсь, что это помогает

+0

Это работает после разблокировки экрана. @peter –

+0

Вы добавили разрешения? – Mushirih

+0

да добавили разрешения тоже. –

0

вы должны использовать этот флаг: FLAG_SHOW_WHEN_LOCKED пример:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
+0

уже есть 'getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);' но он работает после разблокировки экрана. –

+0

забудьте использовать этот флаг тоже: ** FLAG_DISMISS_KEYGUARD ** – zMabrook

+0

и не забудьте добавить разрешение в вашем MainFest: '<использует-разрешение андроида: имя =«android.permission.DISABLE_KEYGUARD»/> ' и добавьте эту строку в действие, которое появится в вашем манифесте: 'android: showOnLockScreen =" true "' – zMabrook

Смежные вопросы