fixed call logs update contact names.
authorTrillGates <williamtrillgates@gmail.com>
Fri, 20 Aug 2021 10:07:58 +0000 (18:07 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Fri, 20 Aug 2021 10:07:58 +0000 (18:07 +0800)
app/src/main/AndroidManifest.xml
app/src/main/java/com/enqualcomm/support/utils/DBHelper.java
app/src/main/java/com/ic/protocols/protocol_s123.java

index 86da3a1..95632d3 100644 (file)
@@ -24,6 +24,7 @@
     <!-- 联系人 -->
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
     <!-- 灭屏 -->
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <!-- <user-permission android:name="android.permission.DEVICE_POWER"/> -->
index 75cbc30..85b763a 100644 (file)
@@ -11,6 +11,7 @@ import android.net.Uri;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.SystemClock;
+import android.provider.CallLog;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.RawContacts;
@@ -69,6 +70,10 @@ public class DBHelper {
      */
     private void addAllContact(ArrayList<Contact> contactArray, ContentResolver resolver) {
         Iterator contactIT = contactArray.iterator();
+        //通过ID去删除联系人
+        //先删除原来的,再进行添加操作
+        int delete = resolver.delete(RawContacts.CONTENT_URI, null, null);
+        ICLogger.d("delete ==> " + delete);
         while (contactIT.hasNext()) {
             Contact contact = (Contact) contactIT.next();
             ContentValues contentvalues = new ContentValues();
@@ -85,9 +90,13 @@ public class DBHelper {
             contentvalues.put("data2", 2);
             resolver.insert(Data.CONTENT_URI, contentvalues);
             contentvalues.clear();
+            //更新通讯录里的名称
+            ContentValues callLogsValues = new ContentValues();
+            callLogsValues.put("name", contact.name);
+            resolver.update(CallLog.Calls.CONTENT_URI, callLogsValues,
+                    "number=?", new String[]{contact.number});
         }
         ICLogger.i("addAllContact done");
-
     }
 
     /**
@@ -761,12 +770,7 @@ public class DBHelper {
                 this.saveContactsImpl(contactArray, admin, care, call, partner, video, sos);
                 lastUpdateTime = currentTime;
             } else {
-                mHandler.postDelayed(new Runnable() {
-                    @Override
-                    public void run() {
-                        DBHelper.this.saveContacts(contactArray, admin, care, call, partner, video, sos);
-                    }
-                }, 1000);
+                mHandler.postDelayed(() -> saveContacts(contactArray, admin, care, call, partner, video, sos), 1000);
             }
         } catch (Exception e) {
             e.printStackTrace();
index a8253c8..e824dfc 100644 (file)
@@ -1229,7 +1229,7 @@ public class protocol_s123 {
             String index = cmdlist[2];
             ICLogger.i(sb.toString());
             connection.send(AP14(index, phnums));
-            ArrayList<Contact> contactArray = new ArrayList<Contact>();
+            ArrayList<Contact> contactArray = new ArrayList<>();
 
             if (Config.custom_name.equals("YT")) {
                 ICLogger.i("=====add hotline 96885 ");
@@ -1240,6 +1240,7 @@ public class protocol_s123 {
             resolver.delete(Uri.parse(ICMembersProvider.MEMBERS), "type=?", new String[]{
                     ICDatabaseHelper.MemberType.WHITE_LIST + ""
             });
+            //从记录上看,
             for (int i = 0; i < phnums.length; i++) {
                 String[] tmp = phnums[i].split("\\|");
                 if (tmp.length == 2) {
@@ -1265,7 +1266,8 @@ public class protocol_s123 {
 //            contactArray.add(new Contact(Contact.CATEGORY_CARE,"CARE","666"));
 //            contactArray.add(new Contact(Contact.CATEGORY_VOLTE,"VOLTE","666"));
 
-            runtime.getDbHelper().saveContacts(contactArray, false, false, true, false, false, false);
+            runtime.getDbHelper().saveContacts(contactArray,
+                    false, false, true, false, false, false);
             //加一份到IC的库中
 
         } else {
@@ -1429,18 +1431,15 @@ public class protocol_s123 {
         System.arraycopy(sb.getBytes(), 0, sentbuf, 0, sb.length());
         System.arraycopy(amrdata, 0, sentbuf, sb.length(), datalen);
         sentbuf[sb.length() + datalen] = '#';
-
         return sentbuf;
-
     }
 
-
     public void handleBP07(String cmd, Connection connection) {
-//平台响应:      IWBP07,20140818064408,6,1,1#
-//20140818064408:设备语音时间,yyyyMMddHHmmss 格式的年月日时分秒
-//6:语音包分包总数
-//1:当前设备收到的是第几个包
-//1:表示服务器接受数据成功,0表示服务器接受数据失败
+        //平台响应:      IWBP07,20140818064408,6,1,1#
+        //20140818064408:设备语音时间,yyyyMMddHHmmss 格式的年月日时分秒
+        //6:语音包分包总数
+        //1:当前设备收到的是第几个包
+        //1:表示服务器接受数据成功,0表示服务器接受数据失败
         String[] cmdlist = cmd.split(CMDSPLIT);
         if (cmdlist.length == 5) {
             try {
@@ -1463,7 +1462,6 @@ public class protocol_s123 {
         }
     }
 
-
     public static StringMessage AP33(String cmdIndex, int workMode) {
         //IWAP33,080835,1#
         //080835:指令流水号
@@ -1521,18 +1519,17 @@ public class protocol_s123 {
 //            CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());
             //此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。
         }
-
     }
 
-
     public static StringMessage AP34(String cmdindex, int workMode) {
         //IWAP34,588854,1#
         //080835:指令流水号
         //8:模式
-        return genStringMessage("AP34", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))
-                .append(CMDSPLIT).append(cmdindex)
-                .append(CMDSPLIT).append(workMode)
-                .append(CMDEND).toString());
+        return genStringMessage("AP34",
+                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))
+                        .append(CMDSPLIT).append(cmdindex)
+                        .append(CMDSPLIT).append(workMode)
+                        .append(CMDEND).toString());
     }
 
     //设置自定义工作模式
@@ -1861,7 +1858,6 @@ public class protocol_s123 {
 
         String[] msg = cmd.split(CMDSPLIT);
         if (msg.length >= 6) {
-
             try {
                 Name = msg[1];
                 appendIndex = msg[2];