From 60dde070b56fda41d0a88e2b92af90dd8dabd5db Mon Sep 17 00:00:00 2001
From: pppscn <35696959@qq.com>
Date: Wed, 30 Mar 2022 17:10:36 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E4=BB=85=E9=94=81?=
=?UTF-8?q?=E5=B1=8F=E7=8A=B6=E6=80=81=E8=BD=AC=E5=8F=91APP=E9=80=9A?=
=?UTF-8?q?=E7=9F=A5=E5=BC=80=E5=85=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 2 +-
.../idormy/sms/forwarder/MainActivity.java | 4 +--
.../idormy/sms/forwarder/MyApplication.java | 2 ++
.../idormy/sms/forwarder/SettingActivity.java | 23 +++++++++---
.../forwarder/receiver/OnePixelReceiver.java | 24 -------------
.../receiver/ScreenBroadcastReceiver.java | 35 +++++++++++++++++++
.../sms/forwarder/service/NotifyService.java | 3 ++
.../idormy/sms/forwarder/utils/Define.java | 1 +
.../sms/forwarder/utils/OnePixelManager.java | 12 +++----
.../sms/forwarder/utils/SettingUtil.java | 8 +++++
app/src/main/res/layout/activity_setting.xml | 10 ++++++
app/src/main/res/values-en/strings.xml | 1 +
app/src/main/res/values/strings.xml | 1 +
13 files changed, 89 insertions(+), 37 deletions(-)
delete mode 100644 app/src/main/java/com/idormy/sms/forwarder/receiver/OnePixelReceiver.java
create mode 100644 app/src/main/java/com/idormy/sms/forwarder/receiver/ScreenBroadcastReceiver.java
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3d53445f..3a307982 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -163,7 +163,7 @@
-
+
{
+ SettingUtil.switchNotUserPresent(isChecked);
+ Log.d(TAG, "switchNotUserPresent:" + isChecked);
+
+ //1像素透明Activity保活 or 仅锁屏状态转发APP通知
+ OnePixelManager onePixelManager = new OnePixelManager();
+ if (SettingUtil.getOnePixelActivity() || SettingUtil.getSwitchNotUserPresent()) {
+ onePixelManager.registerOnePixelReceiver(this);//注册广播接收者
+ } else {
+ onePixelManager.unregisterOnePixelReceiver(this);
+ }
+ });
}
//请求通知使用权限
@@ -770,14 +784,15 @@ public class SettingActivity extends AppCompatActivity {
switch_one_pixel_activity.setOnCheckedChangeListener((buttonView, isChecked) -> {
SettingUtil.switchOnePixelActivity(isChecked);
+ Log.d(TAG, "onCheckedChanged:" + isChecked);
+ //1像素透明Activity保活 or 仅锁屏状态转发APP通知
OnePixelManager onePixelManager = new OnePixelManager();
- if (isChecked) {
+ if (SettingUtil.getOnePixelActivity() || SettingUtil.getSwitchNotUserPresent()) {
onePixelManager.registerOnePixelReceiver(this);//注册广播接收者
} else {
onePixelManager.unregisterOnePixelReceiver(this);
}
- Log.d(TAG, "onCheckedChanged:" + isChecked);
});
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/OnePixelReceiver.java b/app/src/main/java/com/idormy/sms/forwarder/receiver/OnePixelReceiver.java
deleted file mode 100644
index 20cf6116..00000000
--- a/app/src/main/java/com/idormy/sms/forwarder/receiver/OnePixelReceiver.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.idormy.sms.forwarder.receiver;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-import com.idormy.sms.forwarder.utils.OnePixelManager;
-
-
-public class OnePixelReceiver extends BroadcastReceiver {
- private static final String TAG = "OnePixelReceiver";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- OnePixelManager manager = new OnePixelManager();
- if (Intent.ACTION_SCREEN_ON.equals(action)) {//如果亮屏,则关闭1像素Activity
- manager.finishOnePixelActivity();
- } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {//如果息屏,则开启1像素Activity
- manager.startOnePixelActivity(context);
- }
- }
-}
-
diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/ScreenBroadcastReceiver.java b/app/src/main/java/com/idormy/sms/forwarder/receiver/ScreenBroadcastReceiver.java
new file mode 100644
index 00000000..6a9732c1
--- /dev/null
+++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/ScreenBroadcastReceiver.java
@@ -0,0 +1,35 @@
+package com.idormy.sms.forwarder.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import com.idormy.sms.forwarder.MyApplication;
+import com.idormy.sms.forwarder.utils.OnePixelManager;
+import com.idormy.sms.forwarder.utils.SettingUtil;
+
+//监听屏幕状态变换广播(开屏、锁屏、解锁)
+public class ScreenBroadcastReceiver extends BroadcastReceiver {
+ private static final String TAG = "ScreenBroadcastReceiver";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+
+ //1像素透明Activity保活
+ if (SettingUtil.getOnePixelActivity()) {
+ OnePixelManager manager = new OnePixelManager();
+ if (Intent.ACTION_SCREEN_ON.equals(action)) {//如果亮屏,则关闭1像素Activity
+ manager.finishOnePixelActivity();
+ } else if (Intent.ACTION_SCREEN_OFF.equals(action)) {//如果息屏,则开启1像素Activity
+ manager.startOnePixelActivity(context);
+ }
+ }
+
+ //是否已解锁
+ MyApplication.isUserPresent = Intent.ACTION_USER_PRESENT.equals(action);
+ Log.d(TAG, String.format("isUserPresent=%s", MyApplication.isUserPresent));
+ }
+}
+
diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java b/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java
index caa6ae21..70d5ca4d 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java
@@ -42,6 +42,9 @@ public class NotifyService extends NotificationListenerService {
if (sbn.getNotification() == null) return;
if (sbn.getNotification().extras == null) return;
+ //仅锁屏状态转发APP通知
+ if (SettingUtil.getSwitchNotUserPresent() && MyApplication.isUserPresent) return;
+
//推送通知的应用包名
String packageName = sbn.getPackageName();
//自身通知跳过
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java b/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java
index b1a5c8f0..95cdd3ee 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java
@@ -10,6 +10,7 @@ public class Define {
public static final String SP_MSG_KEY_STRING_ENABLE_PHONE = "tsms_msg_key_switch_enable_phone";
public static final String SP_MSG_KEY_STRING_ENABLE_APP_NOTIFY = "tsms_msg_key_switch_enable_app_notify";
public static final String SP_MSG_KEY_STRING_CANCEL_APP_NOTIFY = "tsms_msg_key_switch_cancel_app_notify";
+ public static final String SP_MSG_KEY_STRING_NOT_USER_PRESENT = "tsms_msg_key_switch_not_user_present";
public static final String SP_MSG_KEY_STRING_ENABLE_EXCLUDE_FROM_RECENTS = "tsms_msg_key_switch_enable_exclude_from_recents";
public static final String SP_MSG_KEY_STRING_ENABLE_PLAY_SILENCE_MUSIC = "tsms_msg_key_switch_enable_play_silence_music";
public static final String SP_MSG_KEY_STRING_ENABLE_ONE_PIXEL_ACTIVITY = "tsms_msg_key_switch_enable_one_pixel_activity";
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/OnePixelManager.java b/app/src/main/java/com/idormy/sms/forwarder/utils/OnePixelManager.java
index b36782a8..fdeccbdb 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/OnePixelManager.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/OnePixelManager.java
@@ -6,14 +6,14 @@ import android.content.Intent;
import android.content.IntentFilter;
import com.idormy.sms.forwarder.OnePixelActivity;
-import com.idormy.sms.forwarder.receiver.OnePixelReceiver;
+import com.idormy.sms.forwarder.receiver.ScreenBroadcastReceiver;
import java.lang.ref.WeakReference;
public class OnePixelManager {
private static final String TAG = "OnePixelManager";
private WeakReference mActivity;
- private OnePixelReceiver onePixelReceiver;
+ private ScreenBroadcastReceiver screenBroadcastReceiver;
/**
* 一像素广播接收者注册方法。该方法中初始化OnePixelReceiver,并添加了过滤条件
@@ -24,16 +24,16 @@ public class OnePixelManager {
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_USER_PRESENT);
- onePixelReceiver = new OnePixelReceiver();
- context.registerReceiver(onePixelReceiver, filter);
+ screenBroadcastReceiver = new ScreenBroadcastReceiver();
+ context.registerReceiver(screenBroadcastReceiver, filter);
}
/**
* 对广播接收者进行解注册
*/
public void unregisterOnePixelReceiver(Context context) {
- if (null != onePixelReceiver) {
- context.unregisterReceiver(onePixelReceiver);
+ if (null != screenBroadcastReceiver) {
+ context.unregisterReceiver(screenBroadcastReceiver);
}
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java
index 558bef1f..8005c7c4 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java
@@ -77,6 +77,14 @@ public class SettingUtil {
return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_CANCEL_APP_NOTIFY, false);
}
+ public static void switchNotUserPresent(Boolean enable) {
+ sp_setting.edit().putBoolean(Define.SP_MSG_KEY_STRING_NOT_USER_PRESENT, enable).apply();
+ }
+
+ public static boolean getSwitchNotUserPresent() {
+ return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_NOT_USER_PRESENT, false);
+ }
+
public static void switchEnableBatteryReceiver(Boolean enable) {
sp_setting.edit().putBoolean(Define.SP_MSG_KEY_STRING_BATTERY_RECEIVER, enable).apply();
}
diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml
index 2d68fd90..e3cbbd87 100644
--- a/app/src/main/res/layout/activity_setting.xml
+++ b/app/src/main/res/layout/activity_setting.xml
@@ -222,6 +222,16 @@
android:scaleX="0.7"
android:scaleY="0.7"
android:text="@string/cancel_app_notify" />
+
+
+
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 0fcdfba1..936c6c84 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -189,6 +189,7 @@
Forward app Ntf.
Main switch, requires permission to read notification.
Auto close Ntf.
+ Not User Present
Global Custom Template
Priority: custom template for forwarding rules > Global custom template > System default
Enable regular replacement content
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index eb0eb6b5..7517a59e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -189,6 +189,7 @@
转发应用通知
请授予通知使用权再开启;开启“自动消除”可避免多条通知堆叠
自动消除通知
+ 仅锁屏状态
启用自定义模版
优先级:转发规则的自定义模板 > 全局自定义模版 > 默认
启用正则替换内容