2016-02-01 3 views
2

Отображение диалогового окна предупреждения о блокировке экрана из службы - моя проблема. когда телефон находится в состоянии разблокировки, он отображается хорошо. На самом деле, если телефон заблокирован, он просто разблокирует телефон, а окно предупреждения появится за блокировкой. Вот мой код:Диалоговое окно оповещения Android с телефона, когда телефон заблокирован

Service.java:

public static void popupDialog(String sender , String msg) 
{ 
    final String senderName = sender; 
    final String message = msg; 
    Handler h = new Handler(context.getMainLooper()); 
    h.post(new Runnable() { 
     @Override 
     public void run() { 
      KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 

      if (km.inKeyguardRestrictedInputMode()) 
      { 
       lockFlag = true; 
       Log.d ("---popup","lock"); 
       powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
       km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
       mKeyguardLock = km.newKeyguardLock("com.example.myapplication"); 
       mKeyguardLock.disableKeyguard(); 
       wl = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "com.example.myapplication"); 
       wl.acquire(); 
      } 
      else 
      { 
       Log.d ("---popup","unlock"); 
      } 
      final View view = View.inflate(context.getApplicationContext(),R.layout.popup, null); 
      final AlertDialog.Builder builder1 = new AlertDialog.Builder(context) 
       .setCancelable(true) 
       .setView(view); 
      final ImageView ImageView1 = (ImageView) view.findViewById(R.id.ImageView1); 
      final TextView TextView1 = (TextView) view.findViewById(R.id.TextView1); 
      final TextView TextViewSender = (TextView) view.findViewById(R.id.TextViewSender); 
      TextViewSender.setText (senderName+":"); 
      final TextView TextView2 = (TextView) view.findViewById(R.id.TextView2); 
      TextView2.setText (message); 
      final EditText EditText1 = (EditText) view.findViewById(R.id.EditText1); 

      final ImageButton ImageButton1 = (ImageButton) view.findViewById(R.id.ImageButton1); 
      ImageButton1.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       /*do some task*/ 
        } 
       } 
      }); 
      AlertDialog alertDialog = builder1.create(); 
      alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
      alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      alertDialog.show(); 
     } 
    }); 
} 

Я просто хочу, чтобы показать диалоговое окно предупреждения о замке.

Редакция: Я использую Android Lolipop, и после чтения this link, я использовал TYPE_SYSTEM_OVERLAY вместо TYPE_SYSTEM_ALERT. В этой ситуации я не могу набирать EditText или даже закрыть диалог.

+0

Сообщения о котором вы говорите имеет комментарий, который говорит, что фиксируется 'TYPE_SYSTEM_ERROR'. Вы попробовали это? – Rohit5k2

+0

@ Rohit5k2 Я использовал его, и он сработал, но я должен проверить нижний андроид API. – AFN

+0

Уверен, что нужно. – Rohit5k2

ответ

1

Изменение типа в TYPE_SYSTEM_ERROR

Изменение

alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 

в

alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR); 

Update:

TYPE_SYSTEM_ALERT - Тип окна: системное окно, например предупреждение о низкой мощности. Эти окна всегда находятся поверх окон приложений. В многопользовательских системах отображается только в окне пользовательского пользователя. Константа Значение: 2003 (0x000007d3)

TYPE_SYSTEM_ERROR - Вид из окна: внутренние окна ошибок системы, появляется на вершине все, что они могут. В многопользовательских системах отображается только в окне пользовательского пользователя. Константа Значение: 2010 (0x000007da)

Подробнее является here

+0

Итак, чем отличаются TYPE_SYSTEM_ALERT и TYPE_SYSTEM_ERROR? – AFN

+0

См. Мое обновление. – Rohit5k2

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