import android.util.Log;\r
\r
import com.ic.protocol.Config;\r
+import com.ic.protocol.bean.Contact;\r
import com.ic.protocol.bean.ICLocation;\r
import com.ic.protocol.bean.Runtime;\r
import com.ic.protocol.bean.StringMessage;\r
import com.ic.protocol.bean.voicePacket;\r
import com.ic.protocol.service.protocolMainServer;\r
import com.ic.protocol.utils.Connection;\r
+import com.ic.protocol.utils.DBHelper;\r
import com.ic.protocol.utils.Logger;\r
import com.ic.protocol.utils.SharPreferenceUtil;\r
import com.ic.protocol.utils.Util;\r
.append(ds.getGPSData()).append(ds.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))\r
.append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
.append(ds.getProtection()).append(ds.getWorkMode()).append(CMDSPLIT)\r
- .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
+ .append(ds.getLBSData()).append(CMDSPLIT)\r
+ .append(ds.getAlarmType()).append(CMDSPLIT)\r
+ .append(ds.getLanguage()).append(CMDSPLIT)\r
+ .append(0).append(CMDSPLIT) //不回复地址\r
+ .append(ds.getWifiInfo()).append(CMDEND).toString();\r
\r
}\r
\r
.append(CMDEND).toString();\r
}\r
//设置通讯录,白名单(10个)\r
- public void handleBP14(Connection connection,String cmd){\r
+ public void handleBP14(Connection connection,String cmd , Runtime runtime){\r
// IWBP14,867155030001063,357444,9b44529b|13554820016,,,,,,,,,\r
/**\r
* IWBP14,353456789012345,080835,\r
String index=cmdlist[2];\r
Logger.i(sb.toString());\r
connection.send(genStringMessage("AP14",AP14(index,phnums)));\r
+ ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
+ for (int i=0; i< phnums.length;i++){\r
+ String[] tmp= phnums[i].split("\\|");\r
+ if (tmp.length==2){\r
+ String name=Util.decodeUnicode2Utf8(tmp[0]);\r
+ String phonem=tmp[1];\r
+ Logger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length+" , name="+name+",-"+phonem);\r
+ contactArray.add(new Contact(Contact.CATEGORY_CALL,name,phonem));\r
+ }else{\r
+ Logger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length);\r
+\r
+ }\r
+ }\r
+ runtime.getDbHelper().saveContacts(contactArray,false,false,true,false,false);\r
\r
}else{\r
Logger.i(" BP14 format error!");\r
import android.database.Cursor;\r
import android.net.Uri;\r
import android.os.SystemClock;\r
+import android.provider.BaseColumns;\r
+import android.provider.ContactsContract;\r
import android.provider.ContactsContract.Data;\r
import android.provider.ContactsContract.RawContacts;\r
import android.text.TextUtils;\r
import rx.Observable;\r
import rx.functions.Action1;\r
\r
+import static com.ic.protocol.bean.Contact.CATEGORY_ADMIN;\r
+import static com.ic.protocol.bean.Contact.CATEGORY_CALL;\r
+import static com.ic.protocol.bean.Contact.CATEGORY_CARE;\r
+import static com.ic.protocol.bean.Contact.CATEGORY_PARTNER;\r
+import static com.ic.protocol.bean.Contact.CATEGORY_VIDEO;\r
+\r
public class DBHelper {\r
private static long lastUpdateTime;\r
private Context context;\r
this.context = var2;\r
}\r
\r
- private void addAllContact(ArrayList<Contact> var1, ContentResolver var2) {\r
- Iterator var7 = var1.iterator();\r
-\r
- while(var7.hasNext()) {\r
- Contact var5 = (Contact)var7.next();\r
- ContentValues var6 = new ContentValues();\r
- long var3 = ContentUris.parseId(var2.insert(RawContacts.CONTENT_URI, var6));\r
- var6.clear();\r
- var6.put("raw_contact_id", var3);\r
- var6.put("mimetype", "vnd.android.cursor.item/name");\r
- var6.put("data2", var5.name);\r
- var2.insert(Data.CONTENT_URI, var6);\r
- var6.clear();\r
- var6.put("raw_contact_id", var3);\r
- var6.put("mimetype", "vnd.android.cursor.item/phone_v2");\r
- var6.put("data1", var5.number);\r
- var6.put("data2", 2);\r
- var2.insert(Data.CONTENT_URI, var6);\r
- var6.clear();\r
- }\r
-\r
- }\r
-\r
- private void deleteAllContact(ArrayList<Contact> var1, String var2, ContentResolver var3) {\r
- StringBuilder var6 = new StringBuilder();\r
- var6.append("where=");\r
- var6.append(var2);\r
- Logger.i(var6.toString());\r
- Cursor var7 = var3.query(ICContentProvider.CONTACT_URI, (String[])null, var2, (String[])null, "CATEGORY ASC");\r
- ArrayList var12 = new ArrayList();\r
- if (var7 != null) {\r
- while(true) {\r
- if (!var7.moveToNext()) {\r
- StringBuilder var8 = new StringBuilder();\r
- var8.append("newList=");\r
- var8.append(var12.toString());\r
- Logger.i(var8.toString());\r
- var7.close();\r
- break;\r
- }\r
+ private void addAllContact(ArrayList<Contact> contactArray, ContentResolver resolver) {\r
+ Iterator contactIT = contactArray.iterator();\r
\r
- var12.add(new Contact(var7.getInt(1), var7.getString(2), var7.getString(3), var7.getString(4), var7.getString(5)));\r
- }\r
- }\r
+ while(contactIT.hasNext()) {\r
+ Contact contact = (Contact)contactIT.next();\r
+ ContentValues contentvalues = new ContentValues();\r
+ long raw_contactID = ContentUris.parseId(resolver.insert(RawContacts.CONTENT_URI, contentvalues));\r
\r
- for(int var4 = 0; var4 < var1.size(); ++var4) {\r
- String var14 = ((Contact)var1.get(var4)).number;\r
+ contentvalues.clear();\r
+ contentvalues.put("raw_contact_id", raw_contactID);\r
+ contentvalues.put("mimetype", "vnd.android.cursor.item/name");\r
+ contentvalues.put("data2", contact.name);\r
+ resolver.insert(Data.CONTENT_URI, contentvalues);\r
+ contentvalues.clear();\r
\r
- for(int var5 = 0; var5 < var12.size(); ++var5) {\r
- if (!var14.equals(((Contact)var12.get(var5)).number) && !var14.equals(((Contact)var12.get(var5)).extra)) {\r
- if (!TextUtils.isEmpty(((Contact)var12.get(var5)).icon_index)) {\r
- File var17 = new File(((Contact)var12.get(var5)).icon_index);\r
- if (var17.exists()) {\r
- var17.delete();\r
- }\r
- }\r
- } else {\r
- String var16 = ((Contact)var12.get(var5)).icon_index;\r
- if (!TextUtils.isEmpty(var16) && var16.length() > 10 && var16.contains("/")) {\r
- ((Contact)var1.get(var4)).icon_index = ((Contact)var12.get(var5)).icon_index;\r
- }\r
- }\r
- }\r
+ contentvalues.put("raw_contact_id", raw_contactID);\r
+ contentvalues.put("mimetype", "vnd.android.cursor.item/phone_v2");\r
+ contentvalues.put("data1", contact.number);\r
+ contentvalues.put("data2", 2);\r
+ resolver.insert(Data.CONTENT_URI, contentvalues);\r
+ contentvalues.clear();\r
}\r
\r
- Iterator var11 = var12.iterator();\r
-\r
- while(var11.hasNext()) {\r
- String var13 = this.getContactId(var3, ((Contact)var11.next()).number);\r
- ArrayList var15 = new ArrayList();\r
- Builder var18 = ContentProviderOperation.newDelete(RawContacts.CONTENT_URI);\r
- StringBuilder var9 = new StringBuilder();\r
- var9.append("contact_id=");\r
- var9.append(var13);\r
- var15.add(var18.withSelection(var9.toString(), (String[])null).build());\r
- var18 = ContentProviderOperation.newDelete(Data.CONTENT_URI);\r
- var9 = new StringBuilder();\r
- var9.append("contact_id=");\r
- var9.append(var13);\r
- var15.add(var18.withSelection(var9.toString(), (String[])null).build());\r
-\r
- try {\r
- var3.applyBatch("com.android.contacts", var15);\r
- } catch (Exception var10) {\r
- Logger.i(var10.getMessage());\r
- }\r
- }\r
+ }\r
\r
- var3.delete(ICContentProvider.CONTACT_URI, var2, (String[])null);\r
+ private void deleteAllContact(ArrayList<Contact> contactArraylist, String where, ContentResolver resolver) {\r
+ StringBuilder sb = new StringBuilder();\r
+ sb.append("where=");\r
+ sb.append(where);\r
+ Logger.i(sb.toString());\r
+ Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, where, (String[])null, "CATEGORY ASC");\r
+\r
+ Iterator contactIT = contactArraylist.iterator();\r
+\r
+ while(contactIT.hasNext()) {\r
+ this.DeleteContactId(resolver, ((Contact)contactIT.next()).name);\r
+ }\r
+ resolver.delete(ICContentProvider.CONTACT_URI, where, (String[])null);\r
}\r
\r
private Uri insertDownLoadInfo(String var1, int var2, int var3, String var4) {\r
return this.cr.insert(ICContentProvider.DOWNLOADINFO_URL, var5);\r
}\r
\r
- private void saveContactsImpl(ArrayList<Contact> var1, boolean var2, boolean var3, boolean var4, boolean var5, boolean var6) {\r
- StringBuilder var9 = new StringBuilder();\r
- var9.append("saveContactsImpl contactList = ");\r
- var9.append(var1.toString());\r
- Logger.i(var9.toString());\r
- var9 = new StringBuilder("CATEGORY IN (");\r
- if (var2) {\r
- var9.append(1);\r
- var9.append(",");\r
+ private void saveContactsImpl(ArrayList<Contact> contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video) {\r
+ StringBuilder log = new StringBuilder();\r
+ log.append("saveContactsImpl contactList = ");\r
+ log.append(contactArray.toString());\r
+ Logger.i(log.toString());\r
+ StringBuilder where = new StringBuilder("CATEGORY IN (");\r
+ if (admin) {\r
+ where.append(CATEGORY_ADMIN);\r
+ where.append(",");\r
}\r
\r
- if (var3) {\r
- var9.append(2);\r
- var9.append(",");\r
+ if (care) {\r
+ where.append(CATEGORY_CARE);\r
+ where.append(",");\r
}\r
\r
- if (var4) {\r
- var9.append(3);\r
- var9.append(",");\r
+ if (call) {\r
+ where.append(CATEGORY_CALL);\r
+ where.append(",");\r
}\r
\r
- if (var5) {\r
- var9.append(4);\r
- var9.append(",");\r
+ if (partner) {\r
+ where.append(CATEGORY_PARTNER);\r
+ where.append(",");\r
}\r
\r
- if (var6) {\r
- var9.append(5);\r
- var9.append(",");\r
+ if (video) {\r
+ where.append(CATEGORY_VIDEO);\r
+ where.append(",");\r
}\r
\r
- int var7 = var9.length();\r
- if (var7 > 13) {\r
- var9.setCharAt(var7 - 1, ')');\r
- this.deleteAllContact(var1, var9.toString(), this.cr);\r
- int var8 = var1.size();\r
- if (var8 != 0) {\r
- ContentValues[] var12 = new ContentValues[var8];\r
+ int len = where.length();\r
+ if (len > 13) {\r
+ where.setCharAt(len - 1, ')');\r
+ this.deleteAllContact(contactArray, where.toString(), this.cr);\r
+ int contactCount = contactArray.size();\r
+ if (contactCount != 0) {\r
+ ContentValues[] contentlist = new ContentValues[contactCount];\r
\r
- for(var7 = 0; var7 < var8; ++var7) {\r
- Contact var10 = (Contact)var1.get(var7);\r
- ContentValues var11 = new ContentValues();\r
- var12[var7] = var11;\r
- var11.put("CATEGORY", var10.category);\r
- var11.put("NAME", var10.name);\r
- var11.put("NUMBER", var10.number);\r
- var11.put("ICON", var10.icon_index);\r
- var11.put("EXTRA", var10.extra);\r
- StringBuilder var13 = new StringBuilder();\r
- var13.append("contact=");\r
- var13.append(var10.toString());\r
- Logger.i(var13.toString());\r
+ for(int i = 0; i < contactCount; ++i) {\r
+ Contact contact = (Contact)contactArray.get(i);\r
+ ContentValues contentValues = new ContentValues();\r
+ contentlist[i] = contentValues;\r
+ contentValues.put("CATEGORY", contact.category);\r
+ contentValues.put("NAME", contact.name);\r
+ contentValues.put("NUMBER", contact.number);\r
+ contentValues.put("ICON", contact.icon_index);\r
+ contentValues.put("EXTRA", contact.extra);\r
+ StringBuilder log1 = new StringBuilder();\r
+ log1.append("contact=");\r
+ log1.append(contact.toString());\r
+ Logger.i(log1.toString());\r
}\r
\r
- this.cr.bulkInsert(ICContentProvider.CONTACT_URI, var12);\r
- this.addAllContact(var1, this.cr);\r
+ this.cr.bulkInsert(ICContentProvider.CONTACT_URI, contentlist);\r
+ this.addAllContact(contactArray, this.cr);\r
}\r
\r
}\r
this.cr.delete(var1, (String)null, (String[])null);\r
}\r
\r
- public String getContactId(ContentResolver param1, String param2) {\r
- // $FF: Couldn't be decompiled\r
-\r
- return "";\r
+ public String DeleteContactId(ContentResolver contentResolver, String name) {\r
+ String ContactId=null;\r
+ Uri uri = ContactsContract.RawContacts.CONTENT_URI;\r
+ ContentResolver resolver = contentResolver;\r
+ String where = ContactsContract.PhoneLookup.DISPLAY_NAME;\r
+ Cursor cursor = resolver.query(uri, new String[]{Data._ID}, where + "=?", new String[]{name}, null);\r
+ if (cursor.moveToFirst()) {\r
+ int id = cursor.getInt(0);\r
+ ContactId=String.valueOf(id);\r
+ //根据id删除data中的相应数据\r
+ resolver.delete(uri, where + "=?", new String[]{name});\r
+ uri = ContactsContract.Data.CONTENT_URI;\r
+ resolver.delete(uri, ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{id + ""});\r
+ }\r
+ return ContactId;\r
}\r
\r
public boolean getWeather() {\r
this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE"));\r
}\r
\r
- public void saveContacts(final ArrayList<Contact> var1, final boolean var2, final boolean var3, final boolean var4, final boolean var5, final boolean var6) {\r
+ public void saveContacts(final ArrayList<Contact> contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video) {\r
synchronized(this){}\r
\r
try {\r
- long var7 = SystemClock.elapsedRealtime();\r
- if (var7 - lastUpdateTime > 1000L) {\r
- this.saveContactsImpl(var1, var2, var3, var4, var5, var6);\r
- lastUpdateTime = var7;\r
+ long currenttime = SystemClock.elapsedRealtime();\r
+ if (currenttime - lastUpdateTime > 1000L) {\r
+ this.saveContactsImpl(contactArray, admin, care,call, partner, video);\r
+ lastUpdateTime = currenttime;\r
} else {\r
Observable.timer(1000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
public void call(Long var1x) {\r
- DBHelper.this.saveContacts(var1, var2, var3, var4, var5, var6);\r
+ DBHelper.this.saveContacts(contactArray, admin, care,call, partner, video);\r
}\r
});\r
}\r