|
@@ -15,10 +15,15 @@ import com.xplora.contactprovider.dao.ContactInfo
|
|
|
class WatchContactProvider : ContentProvider() {
|
|
|
companion object {
|
|
|
private const val AUTHORITIES = "com.xplora.WatchContactProvider"
|
|
|
+ private const val CONTENT_URI = "content://$AUTHORITIES"
|
|
|
const val CONTACT_DIR = 0
|
|
|
const val CONTACT_ITEM = 1
|
|
|
+ const val CONTACT_MULTI = 2
|
|
|
|
|
|
const val TABLE_NAME_CONTACT = "contact"
|
|
|
+ const val TABLE_NAME_CONTACT_MULTI = "contact_multi"
|
|
|
+
|
|
|
+ private val CONTACT_TABLE_URI = Uri.parse("$CONTENT_URI/$TABLE_NAME_CONTACT")!!
|
|
|
}
|
|
|
|
|
|
private var db: ContactDatabase? = null
|
|
@@ -27,6 +32,7 @@ class WatchContactProvider : ContentProvider() {
|
|
|
val matcher = UriMatcher(UriMatcher.NO_MATCH)
|
|
|
matcher.addURI(AUTHORITIES, TABLE_NAME_CONTACT, CONTACT_DIR)
|
|
|
matcher.addURI(AUTHORITIES, "$TABLE_NAME_CONTACT/#", CONTACT_ITEM)
|
|
|
+ matcher.addURI(AUTHORITIES, TABLE_NAME_CONTACT_MULTI, CONTACT_MULTI)
|
|
|
matcher
|
|
|
}
|
|
|
|
|
@@ -110,6 +116,27 @@ class WatchContactProvider : ContentProvider() {
|
|
|
context!!.contentResolver.notifyChange(ContentUris.withAppendedId(uri, id), null)
|
|
|
result
|
|
|
}
|
|
|
+ CONTACT_MULTI -> {
|
|
|
+ val dao = db.contactDao()
|
|
|
+ val keyList = contentValues!!.keySet().toList()
|
|
|
+ for (i in keyList.indices) {
|
|
|
+ when (contentValues.getAsString(keyList[i])) {
|
|
|
+ "insert" -> {
|
|
|
+ val info = Gson().fromJson(keyList[i], ContactInfo::class.java)
|
|
|
+ dao.insert(info)
|
|
|
+ }
|
|
|
+ "update" -> {
|
|
|
+ val info = Gson().fromJson(keyList[i], ContactInfo::class.java)
|
|
|
+ dao.update(info)
|
|
|
+ }
|
|
|
+ "delete" -> {
|
|
|
+ dao.delete(ContactInfo(keyList[i].toLong()))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ context!!.contentResolver.notifyChange(CONTACT_TABLE_URI, null)
|
|
|
+ keyList.size
|
|
|
+ }
|
|
|
else -> 0
|
|
|
}
|
|
|
} ?: 0
|