-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":929,"versionName":"2108281114","enabled":true,"outputFile":"ICSer_V929_2108281114_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V929_2108281114_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":930,"versionName":"2108281942","enabled":true,"outputFile":"ICSer_V930_2108281942_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V930_2108281942_release.apk","properties":{}}]
\ No newline at end of file
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
-import android.os.SystemClock;
import android.util.Log;
import com.enqualcomm.support.provider.ICDatabaseHelper;
import com.enqualcomm.support.provider.ICNotificationProvider;
-import com.enqualcomm.support.utils.ICLogger;
-import static android.telephony.TelephonyManager.CALL_STATE_IDLE;
import static com.enqualcomm.support.provider.ICGlobalSettingsProvider.SETTINGS;
/**
true, new ContentObserver(null) {
@Override
public void onChange(boolean selfChange) {
- ICLogger.d("isSelfChange ==> " + isSelfChange);
- if (!isSelfChange) {
- Log.d(TAG, "on phone calls change.");
- queryCallState();
- } else {
- isSelfChange = false;
- }
+ Log.d(TAG, "on phone calls change.");
+ queryCallState();
+ }
+ });
+ //观察通知表的变化
+ mContext.getContentResolver().registerContentObserver(
+ Uri.parse(ICNotificationProvider.NOTIFICATIONS),
+ true, new ContentObserver(null) {
+ @Override
+ public void onChange(boolean selfChange) {
+ handleTopIcon();
}
});
}
- private final Object mLock = new Object();
-
- public void onCallStateChanged(int state, String incomingNumber) {
- ICLogger.d("state == > " + state + " incomingNumber ==> " + incomingNumber);
- //挂断的时候,去查询一下是不是未接电话即可
- if (state == CALL_STATE_IDLE) {
- new Thread(() -> {
- synchronized (mLock) {
- SystemClock.sleep(1000);
- //查询整个通话记录
- queryCallState();
+ private void handleTopIcon() {
+ new Thread(() -> {
+ //查询电话通知个数
+ Cursor query = mContext.getContentResolver()
+ .query(Uri.parse(ICNotificationProvider.NOTIFICATIONS),
+ null, "category=? and type=?",
+ new String[]{"com.ic.phone", "missed_phone"}, null);
+ if (query != null) {
+ if (query.moveToNext()) {
+ updateSettingsState(1);
+ } else {
+ updateSettingsState(0);
}
- }).start();
- }
+ query.close();
+ } else {
+ updateSettingsState(0);
+ }
+ }).start();
}
private void queryCallState() {
if (c != null) {
int count = c.getCount();
Log.d(TAG, "int count ==> " + count);
- if (count == 0) {
- updateSettingsState(0);
- } else {
- //修改顶部的状态
- updateSettingsState(1);
- }
String[] columnNames = c.getColumnNames();
while (c.moveToNext()) {
StringBuffer sb = new StringBuffer();
ContentValues updateValues = new ContentValues();
//更新为已读
updateValues.put("is_read", 1);
- isSelfChange = true;
int update = mContext.getContentResolver().update(Uri.parse("content://call_log/calls"),
updateValues,
where,
Log.d(TAG, "update ==> " + update);
}
- private boolean isSelfChange = false;
-
private void updateSettingsState(int value) {
ContentResolver resolver = mContext.getContentResolver();
ContentValues values = new ContentValues();