Closed DeevD closed 6 years ago
I just publish new version 1.1.2, this version add Deleted status, when you call delete() api, you will received that. You can see : https://github.com/ssseasonnn/RxDownload/blob/master/rxdownload3/src/main/java/zlc/season/rxdownload3/notification/NotificationFactoryImpl.kt
awww bro i see thank you i miss that update notification
bro when i add deleted fun from your simple class but it not work please check bro when i wrong sorry because i not good in kotlin language bro
import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.Build; import android.support.v4.app.NotificationCompat;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import timber.log.Timber; import zlc.season.rxdownload3.core.Deleted; import zlc.season.rxdownload3.core.Downloading; import zlc.season.rxdownload3.core.Failed; import zlc.season.rxdownload3.core.Mission; import zlc.season.rxdownload3.core.RealMission; import zlc.season.rxdownload3.core.Status; import zlc.season.rxdownload3.core.Succeed; import zlc.season.rxdownload3.core.Suspend; import zlc.season.rxdownload3.core.Waiting; import zlc.season.rxdownload3.notification.NotificationFactory;
import static android.content.Context.NOTIFICATION_SERVICE;
/**
public class CustomNotifications implements NotificationFactory {
private String channelId = "rxDownalod";
private String channelName = "rxDownalod";
public HashMap<RealMission, NotificationCompat.Builder> map = new HashMap<>();
@NotNull
@Override
public Notification build(Context context, RealMission realMission, Status status) {
createChannelForOreo(context, channelId, channelName);
NotificationCompat.Builder builder = get(realMission, context);
if (status instanceof Suspend) {
suspend(builder);
} else if (status instanceof Waiting) {
waiting(builder);
} else if (status instanceof Downloading) {
downloading(builder, status);
} else if (status instanceof Failed) {
fail(builder);
} else if (status instanceof Succeed) {
succeed(builder, context);
} else if (status instanceof Deleted) {
deleted(realMission, context);
} else {
new Notification();
}
return builder.build();
}
private Notification deleted(RealMission realMission, Context context) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.cancel(realMission.hashCode());
}
return null;
}
private Notification succeed(NotificationCompat.Builder builder, Context context) {
Intent intent = new Intent(context, DownloadListActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(context, (int) System.currentTimeMillis(), intent, 0);
builder.setContentText("download successful");
builder.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000});
builder.setLights(Color.GREEN, 3000, 3000);
//Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
//builder.setSound(alarmSound);
dismissProgress(builder);
return builder.build();
}
private Notification suspend(NotificationCompat.Builder builder) {
builder.setContentText("download paused");
dismissProgress(builder);
return builder.build();
}
public Notification waiting(NotificationCompat.Builder builder) {
builder.setContentText("download waiting");
dismissProgress(builder);
return builder.build();
}
private Notification downloading(NotificationCompat.Builder builder, Status statuas) {
builder.setContentText("downloading");
if (statuas.getChunkFlag()) {
builder.setProgress(0, 0, true);
} else {
builder.setProgress((int) statuas.getTotalSize(), (int) statuas.getDownloadSize(), false);
}
return builder.build();
}
public Notification fail(NotificationCompat.Builder builder) {
builder.setContentTitle("mahar videos");
builder.setContentText("download fail!");
dismissProgress(builder);
return builder.build();
}
private void dismissProgress(NotificationCompat.Builder builder) {
builder.setProgress(0, 0, false);
}
private NotificationCompat.Builder get(RealMission mission, Context context) {
NotificationCompat.Builder builder = map.get(mission);
if (builder == null) {
builder = createNotificationBuilder(mission, context);
map.put(mission, builder);
}
return builder.setContentTitle(mission.getActual().getSaveName());
}
private NotificationCompat.Builder createNotificationBuilder(RealMission mission, Context context) {
return new NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_download)
.setContentTitle("mahar videos")
.setContentTitle(mission.getActual().getSaveName());
}
private void createChannelForOreo(Context context, String channelId, String channelName) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_LOW);
channel.enableLights(true);
channel.setShowBadge(true);
channel.setLightColor(Color.GREEN);
channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
notificationManager.createNotificationChannel(channel);
}
}
}
your code is wrong, fix it:
if (status instanceof Suspend) {
return suspend(builder);
} else if (status instanceof Waiting) {
return waiting(builder);
} else if (status instanceof Downloading) {
return downloading(builder, status);
} else if (status instanceof Failed) {
return fail(builder);
} else if (status instanceof Succeed) {
return succeed(builder, context);
} else if (status instanceof Deleted) {
return deleted(realMission, context);
} else {
new Notification();
}
heee i wrong thank you bro :D
bro when i delete download mission notification is appear .. How to handle bro