Уведомления Android после нажатия кнопки "все приложение"

106
11

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

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

"Специальная кнопка для закрытия всех приложений" - я имею в виду ту, где вы можете перечислить все фоновые приложения, а затем одним щелчком мыши убейте их всех.

Я тестирую все на OnePlus 3T.

Можно ли снова запустить службу после того, как нажмите "убить всех приложений"?

проявляются:

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

...

<receiver
android:name="com.saga.thewitcherquotes.QuoteOfTheDayReceiver"
android:enabled="true"
android:exported="false" >
</receiver>

<receiver android:name="com.saga.thewitcherquotes.DeviceBootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

<service
android:name="com.saga.thewitcherquotes.QuoteOfTheDayIntentService"
android:exported="false"></service>

BootReceiver:

public class DeviceBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
// on device boot compelete, reset the alarm
Intent alarmIntent = new Intent(context, QuoteOfTheDayReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

Calendar current = Calendar.getInstance();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 21);
calendar.set(Calendar.MINUTE, 30);
if(calendar.before(current))
{
calendar.add(Calendar.DATE, 1);
}

manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent);
}
}
}

Служба с устройством создания уведомлений:

public class QuoteOfTheDayIntentService extends IntentService {
private static final int NOTIFICATION_ID = 3;

public QuoteOfTheDayIntentService() {
super("MyNewIntentService");
}

@Override
protected void onHandleIntent(Intent intent) {
Notification.Builder builder = new Notification.Builder(this);
builder.setContentTitle(getString(R.string.quote_of_the_day));
DatabaseHandler db = DatabaseHandler.getInstance(this);
Random generator = new Random();
int id = generator.nextInt(db.getQuotesSize());
Quote quote = db.getQuote(id, null);
builder.setContentText(quote.getQuote());
builder.setSmallIcon(R.drawable.swords);
builder.setAutoCancel(true);
Intent notifyIntent = new Intent(this, MainActivity.class);
notifyIntent.putExtra("id",id-1);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
Notification notificationCompat = builder.build();
NotificationManagerCompat managerCompat = NotificationManagerCompat.from(this);
managerCompat.notify(NOTIFICATION_ID, notificationCompat);
}
}

спросил(а) 2017-03-24T23:45:00+03:00 3 года, 6 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема