From 4e8458a9cc31ab78b581eb3ae9ca2ff889b56c05 Mon Sep 17 00:00:00 2001 From: TrillGates Date: Mon, 19 Jul 2021 20:20:32 +0800 Subject: [PATCH] add unread msg state listener. --- .../launcher/presenter/MainPagePresenter.java | 2 - .../presenter/StatusBarPresenter.java | 73 ++++++++++++------- 2 files changed, 46 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/ic/launcher/presenter/MainPagePresenter.java b/app/src/main/java/com/ic/launcher/presenter/MainPagePresenter.java index 168de45..a038dce 100644 --- a/app/src/main/java/com/ic/launcher/presenter/MainPagePresenter.java +++ b/app/src/main/java/com/ic/launcher/presenter/MainPagePresenter.java @@ -252,7 +252,6 @@ public class MainPagePresenter extends BasePresenter { } } - public static final String KEY_OXYGEN = "oxygen"; public static final String KEY_HEART_RATE = "heart_rate"; public static final String KEY_ENV_TEMP = "env_temperature"; @@ -275,5 +274,4 @@ public class MainPagePresenter extends BasePresenter { getValueByKey(KEY_HEART_RATE); } - } diff --git a/app/src/main/java/com/ic/launcher/presenter/StatusBarPresenter.java b/app/src/main/java/com/ic/launcher/presenter/StatusBarPresenter.java index f5ae7f2..1126f3a 100644 --- a/app/src/main/java/com/ic/launcher/presenter/StatusBarPresenter.java +++ b/app/src/main/java/com/ic/launcher/presenter/StatusBarPresenter.java @@ -58,26 +58,24 @@ public class StatusBarPresenter extends StatusBarBasePresenter { super(context); executorService = Executors.newSingleThreadExecutor(); contentResolver = mContext.getContentResolver(); - executorService.execute(() -> { - //监听各种状态 - //需要初始化一次,然后进行监听 - getWifiState(); - getGpsState(); - getBtState(); - //需要监听的 - getUnReadMsgState(); - getAlarmState(); - getWarningMsgReadState(); - getSilentState(); - checkIcTalkMsg(); - checkHasMissCall(); - getShakeState(); - getPlaneMode(); - checkAlarmState(); - observerContentChange(); - }); + //监听各种状态 + //需要初始化一次,然后进行监听 + getWifiState(); + getGpsState(); + getBtState(); + //需要监听的 + getUnReadMsgState(); + getWarningMsgReadState(); + getSilentState(); + checkIcTalkMsg(); + checkHasMissCall(); + getShakeState(); + getPlaneMode(); + checkAlarmState(); + observerContentChange(); } + private void observerContentChange() { //监听闹钟状态 contentResolver.registerContentObserver(Uri.parse(Constants.ALARMS), true, @@ -90,7 +88,8 @@ public class StatusBarPresenter extends StatusBarBasePresenter { } }); //观察飞行模式 - contentResolver.registerContentObserver(Uri.parse(SETTINGS + ".is_air_mode_enable"), true, + contentResolver.registerContentObserver(Uri.parse(SETTINGS + ".is_air_mode_enable"), + true, new ContentObserver(null) { @Override public void onChange(boolean selfChange) { @@ -98,7 +97,8 @@ public class StatusBarPresenter extends StatusBarBasePresenter { getPlaneMode(); } }); - contentResolver.registerContentObserver(Uri.parse(SETTINGS + ".key_silent"), true, + contentResolver.registerContentObserver(Uri.parse(SETTINGS + ".key_silent"), + true, new ContentObserver(null) { @Override public void onChange(boolean selfChange) { @@ -106,7 +106,8 @@ public class StatusBarPresenter extends StatusBarBasePresenter { getSilentState(); } }); - contentResolver.registerContentObserver(Uri.parse(SETTINGS + ".key_shake_mode"), true, + contentResolver.registerContentObserver(Uri.parse(SETTINGS + ".key_shake_mode"), + true, new ContentObserver(null) { @Override public void onChange(boolean selfChange) { @@ -121,6 +122,14 @@ public class StatusBarPresenter extends StatusBarBasePresenter { checkHasMissCall(); } }); + contentResolver.registerContentObserver(Uri.parse(SETTINGS + ".sms_unread"), + true, + new ContentObserver(null) { + @Override + public void onChange(boolean selfChange) { + getUnReadMsgState(); + } + }); } private void checkAlarmState() { @@ -206,12 +215,22 @@ public class StatusBarPresenter extends StatusBarBasePresenter { // warningReadState.postValue(true); } - private void getAlarmState() { - // alarmState.postValue(true); - } - private void getUnReadMsgState() { - // msgUnReadState.postValue(true); + executorService.execute(() -> { + Cursor query = contentResolver.query(Uri.parse(SETTINGS), new String[]{"s_value"}, "s_key=?", + new String[]{"sms_unread"}, null); + if (query != null) { + if (query.moveToNext()) { + String value = query.getString(0); + if ("1".equals(value)) { + msgUnReadState.postValue(Boolean.TRUE); + } else { + msgUnReadState.postValue(Boolean.FALSE); + } + } + query.close(); + } + }); } private void getBtState() { @@ -282,7 +301,7 @@ public class StatusBarPresenter extends StatusBarBasePresenter { } - private ContentObserver mGpsMonitor = new ContentObserver(null) { + private final ContentObserver mGpsMonitor = new ContentObserver(null) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); -- 2.17.1