Показать диалог оповещения на главном экране

Я хочу отобразить окно Alert Dialog, но в данный момент оно отображается на экране приложения. Это способ сделать это?

Intent i = new Intent("com.example.servicealarmdemo2.demoactivity");
PendingIntent operation = PendingIntent.getActivity(
                          getBaseContext(), 0, i, Intent.FLAG_ACTIVITY_NEW_TASK);

Должен ли я изменить переменные PendingIntent?

Ответ:

Я наконец-то нашел самый простой способ сделать это. Просто добавьте команду "finish()" в класс MainActivity, чтобы завершить действие и вернуться на домашний экран, после чего на нем может отображаться предупреждение.

Надеюсь, это поможет другим, кто застрял в этой проблеме

2 ответа

Если вы хотите создать свое приложение на главном экране, перейдите по следующей ссылке

это и это

но если вы хотите, чтобы ваш код работал, даже ваш телефон заблокирован с помощью KeyguardLock и WakeLock. Ниже то, что я делаю:

   public class DismissLock extends Activity {

   PowerManager pm;
   WakeLock wl;
   KeyguardManager km;
   KeyguardLock kl;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       // TODO Auto-generated method stub
      super.onCreate(savedInstanceState);
      Log.i("INFO", "onCreate() in DismissLock");
      pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
       km=(KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
      kl=km.newKeyguardLock("INFO");
      wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.ON_AFTER_RELEASE, "INFO");
      wl.acquire(); //wake up the screen
      kl.disableKeyguard();// dismiss the keyguard

     setContentView(R.layout.main);

    }

 @Override
 protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    wl.release(); //when the activiy pauses, we should realse the wakelock
}

 @Override
 protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    wl.acquire();//must call this!
}
}

Конечно, вам все равно нужно объявить разрешение в файле манифеста.

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

////РЕДАКТИРОВАТЬ

и если вы хотите присоединиться к двум работам, вы должны отредактировать свой код следующим образом:

   boolean fDialogMode     = getIntent().hasExtra( "dialog_mode" );

      if( ! fDialogMode ) {
          super.setTheme( android.R.style.Theme_Dialog );
      }

   AlertDemo alert = new AlertDemo();
   pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
   km=(KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
   kl=km.newKeyguardLock("INFO");
   wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.ON_AFTER_RELEASE, "INFO");
   wl.acquire(); //wake up the screen                  
   kl.disableKeyguard();// dismiss the keyguard
/** Opening the Alert Dialog Window */
alert.show(getSupportFragmentManager(), "AlertDemo");

и в другой пакет или получатель добавить следующий код:

        Intent i;
    PackageManager manager = getPackageManager();
    try {
        i = manager.getLaunchIntentForPackage("com.example.openlock");
        if (i == null)
            throw new PackageManager.NameNotFoundException();
        i.addCategory(Intent.CATEGORY_LAUNCHER);

        startActivity(i);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }

Используйте Сервис для этого

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.getApplicationContext().startActivity(intent);

Ниже приведен код

public class HomepopupDataService extends Service {

    private static final String TAG = "HomepopupDataService";

    @Override
    public void onCreate() {
        Log.i(TAG, "Service onCreate");
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        Log.i(TAG, "Service onStartCommand");

        CountDownTimer dlgCountDown;
        Log.e("---------------", "onHandleIntent");
        dlgCountDown = new CountDownTimer(10000, 1000) {
            public void onTick(long millisUntilFinished) {
                Log.e("---------------", "onHandleIntent++");
            }

            public void onFinish() {
                Intent i = new Intent(getApplicationContext(),
                        DialogActivity.class);

                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                getApplicationContext().startActivity(i);
            }
        }.start();
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        Log.i(TAG, "Service onBind");
        return null;
    }

    @Override
    public void onDestroy() {
        Log.i(TAG, "Service onDestroy");
    }

}
Другие вопросы по тегам