[app] Update notification util (#94)
Open app list instead of module list
This commit is contained in:
parent
5c1997f64d
commit
07b84d6694
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue