53 lines
2.3 KiB
Java
53 lines
2.3 KiB
Java
package org.sufficientlysecure.keychain;
|
|
|
|
|
|
import android.app.NotificationChannel;
|
|
import android.app.NotificationManager;
|
|
import android.content.Context;
|
|
import android.os.Build;
|
|
import android.os.Build.VERSION_CODES;
|
|
import android.support.annotation.RequiresApi;
|
|
import android.support.annotation.StringRes;
|
|
|
|
|
|
public class NotificationChannelManager {
|
|
public static final String KEYSERVER_SYNC = "keyserverSync";
|
|
public static final String PERMISSION_REQUESTS = "permissionRequests";
|
|
public static final String PASSPHRASE_CACHE = "passphraseCache";
|
|
public static final String ORBOT = "orbot";
|
|
|
|
private final Context context;
|
|
private final NotificationManager notificationManager;
|
|
|
|
public static NotificationChannelManager getInstance(Context context) {
|
|
NotificationManager notifyMan = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
|
return new NotificationChannelManager(context.getApplicationContext(), notifyMan);
|
|
}
|
|
|
|
private NotificationChannelManager(Context context, NotificationManager notificationManager) {
|
|
this.context = context;
|
|
this.notificationManager = notificationManager;
|
|
}
|
|
|
|
public void createNotificationChannelsIfNecessary() {
|
|
if (notificationManager == null) {
|
|
return;
|
|
}
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
|
return;
|
|
}
|
|
|
|
createNotificationChannel(KEYSERVER_SYNC, R.string.notify_channel_keysync, NotificationManager.IMPORTANCE_MIN);
|
|
createNotificationChannel(PERMISSION_REQUESTS, R.string.notify_channel_permission, NotificationManager.IMPORTANCE_MIN);
|
|
createNotificationChannel(PASSPHRASE_CACHE, R.string.notify_channel_passcache, NotificationManager.IMPORTANCE_NONE);
|
|
createNotificationChannel(ORBOT, R.string.notify_channel_orbot, NotificationManager.IMPORTANCE_DEFAULT);
|
|
}
|
|
|
|
@RequiresApi(api = VERSION_CODES.O)
|
|
private void createNotificationChannel(String channelName, @StringRes int channelDescription, int importance) {
|
|
CharSequence descriptionText = context.getString(channelDescription);
|
|
NotificationChannel channel = new NotificationChannel(channelName, descriptionText, importance);
|
|
notificationManager.createNotificationChannel(channel);
|
|
}
|
|
}
|