[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 java.io.StringWriter;
import io.github.lsposed.manager.ui.activity.CrashReportActivity; import io.github.lsposed.manager.ui.activity.CrashReportActivity;
import io.github.lsposed.manager.util.NotificationUtil;
public class App extends Application { public class App extends Application {
public static final String TAG = "LSPosedManager"; public static final String TAG = "LSPosedManager";
@ -61,7 +60,5 @@ public class App extends Application {
instance = this; instance = this;
pref = PreferenceManager.getDefaultSharedPreferences(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")) { 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")) { } 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); Comparator<PackageInfo> cmp = AppHelper.getAppListComparator(0, pm);
fullList.sort((a, b) -> { fullList.sort((a, b) -> cmp.compare(a.pkg, b.pkg));
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;
}
});
adapter.addAll(showList); adapter.addAll(showList);
adapter.notifyDataSetChanged(); adapter.notifyDataSetChanged();
moduleUtil.updateModulesList(); moduleUtil.updateModulesList();

View File

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

View File

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