[app] Update notification util (#94)

Open app list instead of module list
This commit is contained in:
tehcneko 2021-02-08 15:35:25 +08:00 committed by GitHub
parent 5c1997f64d
commit 07b84d6694
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 66 deletions

View File

@ -11,7 +11,6 @@ import java.io.PrintWriter;
import java.io.StringWriter;
import io.github.lsposed.manager.ui.activity.CrashReportActivity;
import io.github.lsposed.manager.util.NotificationUtil;
public class App extends Application {
public static final String TAG = "LSPosedManager";
@ -61,7 +60,5 @@ public class App extends Application {
instance = this;
pref = PreferenceManager.getDefaultSharedPreferences(this);
NotificationUtil.init();
}
}

View File

@ -28,9 +28,9 @@ public class EdServiceReceiver extends BroadcastReceiver {
}
if (intent.getAction().equals("io.github.lsposed.action.MODULE_NOT_ACTIVATAED")) {
NotificationUtil.showNotActivatedNotification(packageName, module.getAppName());
NotificationUtil.showNotification(context, packageName, module.getAppName(), false);
} else if (intent.getAction().equals("io.github.lsposed.action.MODULE_UPDATED")) {
NotificationUtil.showModulesUpdatedNotification(module.getAppName());
NotificationUtil.showNotification(context, packageName, module.getAppName(), true);
}
}
}

View File

@ -74,17 +74,7 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
}
}
Comparator<PackageInfo> cmp = AppHelper.getAppListComparator(0, pm);
fullList.sort((a, b) -> {
boolean aChecked = moduleUtil.isModuleEnabled(a.packageName);
boolean bChecked = moduleUtil.isModuleEnabled(b.packageName);
if (aChecked == bChecked) {
return cmp.compare(a.pkg, b.pkg);
} else if (aChecked) {
return -1;
} else {
return 1;
}
});
fullList.sort((a, b) -> cmp.compare(a.pkg, b.pkg));
adapter.addAll(showList);
adapter.notifyDataSetChanged();
moduleUtil.updateModulesList();

View File

@ -11,31 +11,19 @@ import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat;
import io.github.lsposed.manager.App;
import io.github.lsposed.manager.R;
import io.github.lsposed.manager.ui.activity.ModulesActivity;
import io.github.lsposed.manager.ui.activity.AppListActivity;
@SuppressLint("UnspecifiedImmutableFlag")
public final class NotificationUtil {
public static final int NOTIFICATION_MODULE_NOT_ACTIVATED_YET = 0;
private static final int NOTIFICATION_MODULES_UPDATED = 1;
private static final int PENDING_INTENT_OPEN_MODULES = 0;
private static final int PENDING_INTENT_OPEN_INSTALL = 1;
private static final int PENDING_INTENT_OPEN_APP_LIST = 0;
private static final String NOTIFICATION_MODULES_CHANNEL = "modules_channel_2";
@SuppressLint("StaticFieldLeak")
private static Context context = null;
@SuppressLint("StaticFieldLeak")
private static NotificationManagerCompat notificationManager;
public static void init() {
if (context != null) {
return;
}
context = App.getInstance();
notificationManager = NotificationManagerCompat.from(context);
public static void showNotification(Context context, String modulePackageName, String moduleName, boolean enabled) {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
NotificationChannelCompat.Builder channel = new NotificationChannelCompat.Builder(NOTIFICATION_MODULES_CHANNEL,
NotificationManager.IMPORTANCE_HIGH)
@ -43,48 +31,29 @@ public final class NotificationUtil {
.setSound(null, null)
.setVibrationPattern(null);
notificationManager.createNotificationChannel(channel.build());
}
public static void showNotActivatedNotification(String packageName, String appName) {
Intent intent = new Intent(context, ModulesActivity.class)
String title = context.getString(enabled ? R.string.xposed_module_updated_notification_title : R.string.module_is_not_activated_yet);
String content = context.getString(enabled ? R.string.xposed_module_updated_notification_content : R.string.module_is_not_activated_yet_detailed, moduleName);
Intent intent = new Intent(context, AppListActivity.class)
.putExtra("modulePackageName", modulePackageName)
.putExtra("moduleName", moduleName)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pModulesTab = PendingIntent.getActivity(context, PENDING_INTENT_OPEN_MODULES, intent, PendingIntent.FLAG_UPDATE_CURRENT);
String title = context.getString(R.string.module_is_not_activated_yet);
NotificationCompat.Builder builder = getNotificationBuilder(title, appName)
.setContentIntent(pModulesTab);
PendingIntent contentIntent = PendingIntent.getActivity(context, PENDING_INTENT_OPEN_APP_LIST, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
style.setBigContentTitle(title);
style.bigText(context.getString(R.string.module_is_not_activated_yet_detailed, appName));
builder.setStyle(style);
style.bigText(content);
notificationManager.notify(packageName, NOTIFICATION_MODULE_NOT_ACTIVATED_YET, builder.build());
}
public static void showModulesUpdatedNotification(String appName) {
Intent intent = new Intent(context, ModulesActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pInstallTab = PendingIntent.getActivity(context, PENDING_INTENT_OPEN_INSTALL, intent, PendingIntent.FLAG_UPDATE_CURRENT);
String title = context
.getString(R.string.xposed_module_updated_notification_title);
NotificationCompat.Builder builder = getNotificationBuilder(title, appName)
.setContentIntent(pInstallTab);
notificationManager.notify(null, NOTIFICATION_MODULES_UPDATED, builder.build());
}
private static NotificationCompat.Builder getNotificationBuilder(String title, String message) {
return new NotificationCompat.Builder(context, NOTIFICATION_MODULES_CHANNEL)
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_MODULES_CHANNEL)
.setContentTitle(title)
.setContentText(message)
.setSound(null)
.setVibrate(new long[]{0})
.setContentText(content)
.setAutoCancel(true)
.setSmallIcon(R.drawable.ic_notification)
.setColor(ContextCompat.getColor(context, R.color.colorPrimary));
.setColor(ContextCompat.getColor(context, R.color.colorPrimary))
.setContentIntent(contentIntent)
.setStyle(style);
notificationManager.notify(modulePackageName, enabled ? NOTIFICATION_MODULES_UPDATED : NOTIFICATION_MODULE_NOT_ACTIVATED_YET, builder.build());
}
}

View File

@ -138,4 +138,5 @@
<string name="menu_backup_and_restore">备份…</string>
<string name="menu_backup">备份</string>
<string name="menu_restore">恢复</string>
<string name="xposed_module_updated_notification_content">%s 已更新</string>
</resources>

View File

@ -146,4 +146,5 @@
<string name="menu_backup_and_restore">Backup…</string>
<string name="menu_backup">Backup</string>
<string name="menu_restore">Restore</string>
<string name="xposed_module_updated_notification_content">%s has been updated</string>
</resources>