看了一些Android开源小应用的写法,感觉好像代码都比较乱,各种各样的都有
虽然自己写的代码也很糟糕,但还是能感觉到在Android开发方面的代码比JEE的要乱很多
着重点不一样吧
联系人修改
1、根据已有的数据,特别是id,查询出要修改哪几条数据,然后一条条去修改
这是一种方法,但我目前没有采取这种方法,因为服务器端返回的数据中只包含了一些数据,没有很多像主键这样的东西,所以我采取了另外一种写法
2、删除data表中有关的数据,然后再新增,这是我目前采用的方法,raw_contacts表和contacts表数据不删除,只是修改
基本代码类似下面
// 已知一个ID了,要修改他下面的数据
// 删除他下面的DATA数据,然后再新增数据
long id = 3l;
// 根据id查询出rawid
// 可能有多个rawid
Cursor cursor = rawContactsCursor(getApplicationContext(), id);
while (cursor.moveToNext()) {
long rawid = cursor.getLong(cursor
.getColumnIndex(RawContacts._ID));
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation
.newDelete(Data.CONTENT_URI).withSelection(
Data.RAW_CONTACT_ID + "=?",
new String[] { String.valueOf(rawid) })
.build());
ops.add(ContentProviderOperation
.newInsert(Data.CONTENT_URI).withValue(
Data.RAW_CONTACT_ID, rawid).withValues(
getNameNewCV()).build());
ops.add(ContentProviderOperation
.newInsert(Data.CONTENT_URI).withValue(
Data.RAW_CONTACT_ID, rawid).withValues(
getPhoneNewCV()).build());
try {
ContentProviderResult[] rst = getContentResolver()
.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
}
}
private Cursor rawContactsCursor(Context ctx, long id) {
return ctx.getContentResolver().query(
ContactsContract.RawContacts.CONTENT_URI, null,
ContactsContract.RawContacts.CONTACT_ID + "=?",
new String[] { String.valueOf(id) }, null);
}
public ContentValues getNameNewCV() {
ContentValues cv = new ContentValues();
cv.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
cv.put(StructuredName.DISPLAY_NAME, "武 体");
cv.put(StructuredName.GIVEN_NAME, "体");
cv.put(StructuredName.FAMILY_NAME, "武");
return cv;
}
public ContentValues getPhoneNewCV() {
ContentValues cv = new ContentValues();
cv.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
cv.put(Phone.NUMBER, "666666");
cv.put(Phone.TYPE, Phone.TYPE_COMPANY_MAIN);
return cv;
}
备注:这样修改还是有问题的,貌似contacts会生成新的记录,这样对于需要contact_id的情况就是悲剧啊
下面删除联系人的代码也还是有问题的
// 删除联系人
// 删除Data
long id = 1l;
// 根据id查询出rawid
// 可能有多个rawid
Cursor cursor = rawContactsCursor(getApplicationContext(), id);
ArrayList<ContentProviderOperation> ops = null;
while (cursor.moveToNext()) {
long rawid = cursor.getLong(cursor
.getColumnIndex(RawContacts._ID));
ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation
.newDelete(Data.CONTENT_URI).withSelection(
Data.RAW_CONTACT_ID + "=?",
new String[] { String.valueOf(rawid) })
.build());
ops.add(ContentProviderOperation.newDelete(
ContentUris.withAppendedId(RawContacts.CONTENT_URI,
rawid)).build());
ops.add(ContentProviderOperation.newDelete(
ContentUris
.withAppendedId(Contacts.CONTENT_URI, id))
.build());
try {
ContentProviderResult[] rst = getContentResolver()
.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
《Struts 2.1权威指南》特点为:1.经验丰富,针对性强 ...《Struts 2.1权威指南》最后配备了几个非常常见的案例,可以让读者在掌握前而的基础知识点的情况下,将所有知识融会贯通,把基础知识点应用项目开发过程中。
该代码主要演示了基于Android2.1系统的蓝牙编程,用户可以在此代码的基础上进行扩展,从而大大减少相关项目的开发时间。
李刚的Struts 2.1权威指南:基于WebWork核心的MVC开发,写的很详细。一共有九个压缩文件。
基于Android2.1的电子病历开发摘要.pdf基于Android2.1的电子病历开发摘要.pdf基于Android2.1的电子病历开发摘要.pdf基于Android2.1的电子病历开发摘要.pdf基于Android2.1的电子病历开发摘要.pdf基于Android2.1的电子...
基于struct2.1 hibernate3.0 spring2.5 BBS系统 基于struct2.1 hibernate3.0 spring2.5 BBS系统
SAS2.1标准:yuanban SAS2.1标准 SAS2.1标准
辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 ...
这是一款基于android2.1系统下的数独游戏,是最完整版的数独游戏!
axis2.1.7.4,axis2.1.7.4
制作启动盘WePE2.1。
利用FE2.1 USB芯片制作的一转七USB扩展口 ,包含原理图和PCB文件
hdmi协议 version 2.1
UEFI spec 2.1
串口调试助手2.1 串口调试助手2.1 串口调试助手2.1
基于springboot 2.1 + shiro + redis + layUI构建的通用后台权限管理系统模板(源码+数据库),项目经过严格测试,确保可以运行! 基于springboot 2.1 + shiro + redis + layUI构建的通用后台权限管理系统模板...
spketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-...
北斗通信协议2.1版本
OpenGL2.1 API文档
slp2.1_bios
WampServer2.1 配置说明 修改网站路径文件夹