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

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

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

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

Кажется, есть только нормальные примеры уведомлений, такие как отображение простой информации и отклонение уведомления при нажатии кнопки. Вытягивание моих волос в течение 5 дней может помочь мне в этом! ПОЖАЛУЙСТА?

PS: я не хочу использовать уведомление MediaStyle.

1 ответ

Решение

Вы можете использовать активность без интерфейса.

public class NotificationActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     //do your stuff
    finish();//end activity
}

public static PendingIntent getViewIntent(int id){
    Intent intent = new Intent(AppContext.context, NotificationActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);      
    return PendingIntent.getActivity(AppContext.context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
 }
}

В вашем манифесте:

<activity
        android:name=".NotificationActivity"
        android:taskAffinity=""
        android:excludeFromRecents="true"
        android:theme="@android:style/Theme.NoDisplay">
    </activity>

И внутри NotificationBuilder

 NotificationCompat.Builder mBuilder =  new NotificationCompat.Builder(AppContext.context);

 PendingIntent resultPendingIntent = NotificationActivity.getViewIntent(id);
    mBuilder.setContentIntent(resultPendingIntent);

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

NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    int notificationID =100;// this ID has to be same as your previuos ID
    // mId allows you to update the notification later on.
    mNotificationManager.notify(notificationID, mBuilder.build());
Другие вопросы по тегам