Support config change
This commit is contained in:
parent
b0bf38a8aa
commit
d1ea380898
|
|
@ -86,6 +86,15 @@ public class LSPNotificationManager {
|
|||
return Icon.createWithBitmap(getBitmap(R.drawable.ic_notification));
|
||||
}
|
||||
|
||||
private static boolean hasNotificationChannelForSystem(
|
||||
INotificationManager nm, String channelId) throws RemoteException {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
return nm.getNotificationChannelForPackage("android", 1000, channelId, null, false) != null;
|
||||
} else {
|
||||
return nm.getNotificationChannelForPackage("android", 1000, channelId, false) != null;
|
||||
}
|
||||
}
|
||||
|
||||
private static void createNotificationChannel(INotificationManager nm) throws RemoteException {
|
||||
var context = new FakeContext();
|
||||
var list = new ArrayList<NotificationChannel>();
|
||||
|
|
@ -94,13 +103,21 @@ public class LSPNotificationManager {
|
|||
context.getString(R.string.module_updated_channel_name),
|
||||
NotificationManager.IMPORTANCE_HIGH);
|
||||
updated.setShowBadge(false);
|
||||
list.add(updated);
|
||||
if (hasNotificationChannelForSystem(nm, UPDATED_CHANNEL_ID)) {
|
||||
nm.updateNotificationChannelForPackage("android", 1000, updated);
|
||||
} else {
|
||||
list.add(updated);
|
||||
}
|
||||
|
||||
var status = new NotificationChannel(STATUS_CHANNEL_ID,
|
||||
context.getString(R.string.status_channel_name),
|
||||
NotificationManager.IMPORTANCE_MIN);
|
||||
status.setShowBadge(false);
|
||||
list.add(status);
|
||||
if (hasNotificationChannelForSystem(nm, STATUS_CHANNEL_ID)) {
|
||||
nm.updateNotificationChannelForPackage("android", 1000, status);
|
||||
} else {
|
||||
list.add(status);
|
||||
}
|
||||
|
||||
nm.createNotificationChannelsForPackage("android", 1000, new ParceledListSlice<>(list));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -209,6 +209,10 @@ public class LSPosedService extends ILSPosedService.Stub {
|
|||
|
||||
private void dispatchConfigurationChanged(Intent intent) {
|
||||
ConfigFileManager.reloadConfiguration();
|
||||
var configManager = ConfigManager.getInstance();
|
||||
if (configManager.enableStatusNotification()) {
|
||||
LSPNotificationManager.notifyStatusNotification();
|
||||
}
|
||||
}
|
||||
|
||||
private void dispatchSecretCodeReceive(Intent i) {
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ public interface INotificationManager extends IInterface {
|
|||
|
||||
void createNotificationChannelsForPackage(String pkg, int uid, ParceledListSlice<NotificationChannel> channelsList) throws RemoteException;
|
||||
|
||||
void updateNotificationChannelForPackage(String pkg, int uid, NotificationChannel channel);
|
||||
|
||||
@RequiresApi(30)
|
||||
NotificationChannel getNotificationChannelForPackage(String pkg, int uid, String channelId, String conversationId, boolean includeDeleted) throws RemoteException;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue