use standard URL ID int for Intents used in Notifications
This keeps the IDs standard throughout the code: either urlString when it should be a String, or urlString.hashCode() when it should be an int. It also follows the naming convention in DownloaderService helper methods, e.g. getIntentFilter(). "create" to me doesn't necessarily mean also "get" Using @NonNull or @Nullable is fine when it is actually useful, like the compiler can catch errors, but it also adds a lot of noise when reading the code. For example, @NonNull here will just make people avoid thinking. Context can never be null anywhere in Android, that's a given throughout the Android API. And in this code, urlString is the unique ID used throughout the process, so if its ever null, nothing works.
This commit is contained in:
parent
08988f2369
commit
dded004321
@ -179,12 +179,13 @@ public class InstallManagerService extends Service {
|
||||
}
|
||||
|
||||
private NotificationCompat.Builder createNotification(String urlString, @Nullable String packageName) {
|
||||
int downloadUrlId = urlString.hashCode();
|
||||
return new NotificationCompat.Builder(this)
|
||||
.setAutoCancel(true)
|
||||
.setContentIntent(createAppDetailsIntent(0, packageName))
|
||||
.setContentIntent(getAppDetailsIntent(downloadUrlId, apk.packageName))
|
||||
.setContentTitle(getNotificationTitle(packageName))
|
||||
.addAction(R.drawable.ic_cancel_black_24dp, getString(R.string.cancel),
|
||||
DownloaderService.createCancelDownloadIntent(this, 0, urlString))
|
||||
DownloaderService.getCancelPendingIntent(this, urlString))
|
||||
.setSmallIcon(android.R.drawable.stat_sys_download)
|
||||
.setContentText(urlString)
|
||||
.setProgress(100, 0, true);
|
||||
@ -207,7 +208,7 @@ public class InstallManagerService extends Service {
|
||||
return title;
|
||||
}
|
||||
|
||||
private PendingIntent createAppDetailsIntent(int requestCode, String packageName) {
|
||||
private PendingIntent getAppDetailsIntent(int requestCode, String packageName) {
|
||||
TaskStackBuilder stackBuilder;
|
||||
if (packageName != null) {
|
||||
Intent notifyIntent = new Intent(getApplicationContext(), AppDetails.class)
|
||||
@ -252,7 +253,7 @@ public class InstallManagerService extends Service {
|
||||
.setAutoCancel(true)
|
||||
.setContentTitle(title)
|
||||
.setSmallIcon(android.R.drawable.stat_sys_download_done)
|
||||
.setContentIntent(createAppDetailsIntent(downloadUrlId, packageName))
|
||||
.setContentIntent(getAppDetailsIntent(downloadUrlId, packageName))
|
||||
.setContentText(getString(R.string.tap_to_install));
|
||||
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
||||
nm.notify(downloadUrlId, builder.build());
|
||||
|
@ -30,7 +30,6 @@ import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.os.PatternMatcher;
|
||||
import android.os.Process;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
@ -138,13 +137,12 @@ public class DownloaderService extends Service {
|
||||
}
|
||||
}
|
||||
|
||||
public static PendingIntent createCancelDownloadIntent(@NonNull Context context, int
|
||||
requestCode, @NonNull String urlString) {
|
||||
public static PendingIntent getCancelPendingIntent(Context context, String urlString) {
|
||||
Intent cancelIntent = new Intent(context.getApplicationContext(), DownloaderService.class)
|
||||
.setData(Uri.parse(urlString))
|
||||
.setAction(ACTION_CANCEL);
|
||||
return PendingIntent.getService(context.getApplicationContext(),
|
||||
requestCode,
|
||||
urlString.hashCode(),
|
||||
cancelIntent,
|
||||
PendingIntent.FLAG_CANCEL_CURRENT);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user