Diğer bir fikir:
Normalde bir bildirim oluşturursanız, bir, iki veya 3 eylemine de ihtiyacınız vardır. İhtiyacım olan tüm bildirimleri oluşturan ve ayrıca tüm Amaç çağrılarını alan bir "NotifyManager" oluşturdum. Böylece tüm eylemleri yönetebilir VE ayrıca işten çıkarma olayını TEK bir yerde yakalayabilirim.
public class NotifyPerformService extends IntentService {
@Inject NotificationManager notificationManager;
public NotifyPerformService() {
super("NotifyService");
...
}
@Override
public void onHandleIntent(Intent intent) {
notificationManager.performNotifyCall(intent);
}
deleteIntent oluşturmak için bunu kullanın (NotificationManager'da):
private PendingIntent createOnDismissedIntent(Context context) {
Intent intent = new Intent(context, NotifyPerformMailService.class).setAction("ACTION_NOTIFY_DELETED");
PendingIntent pendingIntent = PendingIntent.getService(context, SOME_NOTIFY_DELETED_ID, intent, 0);
return pendingIntent;
}
ve silme amacını şu şekilde ayarlamak için kullandığım (NotificationManager'da):
private NotificationCompat.Builder setNotificationStandardValues(Context context, long when){
String subText = "some string";
NotificationCompat.Builder builder = new NotificationCompat.Builder(context.getApplicationContext());
builder
.setLights(ContextUtils.getResourceColor(R.color.primary) , 1800, 3500)
.setAutoCancel(true)
.setWhen(when)
.setVibrate(new long[]{1000, 1000})
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
.setSmallIcon(R.drawable.ic_white_24dp)
.setGroup(NOTIFY_GROUP)
.setContentInfo(subText)
.setDeleteIntent(createOnDismissedIntent(context))
;
return builder;
}
ve son olarak aynı NotificationManager'da gerçekleştir işlevi bulunur:
public void performNotifyCall(Intent intent) {
String action = intent.getAction();
boolean success = false;
if(action.equals(ACTION_DELETE)) {
success = delete(...);
}
if(action.equals(ACTION_SHOW)) {
success = showDetails(...);
}
if(action.equals("ACTION_NOTIFY_DELETED")) {
success = true;
}
if(success == false){
return;
}
}
builder.setAutoCancel(true);
Bir kullanıcı bildirimi tıkladığında ve iptal edildiğinde ortaya çıkan bildirimler için benzer bir yaklaşım olup olmadığını merak ediyordum , silme-Niyeti tetiklenmedi