Alert Box без вывода приложения на передний план - PullRequest
2 голосов
/ 27 мая 2011

Я занимаюсь разработкой приложения для Android, в котором я добавил функцию напоминания. Но если приложение работает в фоне , скажите, если я на домашнем экране , а приложение работает в фоновом режиме, во время напоминания появится окно предупреждения должен появиться на экране без переноса приложения на передний план . Это возможно?

Ответы [ 4 ]

0 голосов
/ 25 декабря 2013

установить режим запуска активности на SingleInstance в манифесте будет хорошо ~

0 голосов
/ 27 мая 2011

Используйте Сервис для обработки напоминания и запуска окна предупреждения с напоминанием, которое будет в основном активным или диалоговым окном. Но для заблокированного экрана это может или не может отображать предупреждение, для этого вы должны использовать следующий код в методе создания Действия

// add flag to show activity window if screen is locked.
        Window window = this.getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Выше кода должен быть после "super.onCreate (pSavedInstanceState);"

0 голосов
/ 27 мая 2011

Вы должны поместить код напоминания в сервис, подобный этому

public class MyService extends Service {

private Timer timer = new Timer();
private static final long UPDATE_INTERVAL = 3600000;
public MediaPlayer mp;
public String ns =  Context.NOTIFICATION_SERVICE; 
public NotificationManager mNotificationManager;
public int icon = R.drawable.calendar;

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    mp = MediaPlayer.create(this, R.raw.mail120);
    mNotificationManager  = (NotificationManager) getSystemService(ns);
    //Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();

}

@Override
public void onDestroy() {
    super.onDestroy();
    timer.cancel();
    //Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();

}

@Override
public void onStart(Intent intent, int startId) {

    super.onStart(intent, startId);
    _startService(this);


}

public void _startService(final Context context) {
    notified = new ArrayList<String>();
    notified_ergs = "";
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {

             //do some stuff
        }
    },0,UPDATE_INTERVAL);    
}
 }

и зарегистрировать Broadcastreceiver:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyStartupIntentReceiver extends BroadcastReceiver{
 @Override
 public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent();
serviceIntent.setAction("[packagename].MyService");
context.startService(serviceIntent);

}
}

Указанный ресивер для запуска при загрузке (в AndroidМанифест

<receiver android:name=".MyStartupIntentReceiver">
        <intent-filter>
            <action
                android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </receiver>

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

0 голосов
/ 27 мая 2011

Диалоговое окно с предупреждением создается с учетом контекста вашей активности, поэтому ваша деятельность (приложение) выходит на передний план.

Почему бы вам не запустить уведомление в строке состояния для того же?

...