比如说ContactSaveService怎么联系到ContactsProvider2的,通过哪些函数?
解决方案 »
- 如何导入dalvik.annotation.EnclosingMethod
- 求助,熬了一夜也没搞定,ImageView的onDraw函数问题
- 谁能介绍一下Maven,Ant,makefile适用的环境吗?它们设计的初衷是为了哪种语言?我在网上稍微的搜索了一下makefile,都是C。。。
- 求助!关于Android Bluetooth
- res文件夹添加了新项,R却没变
- 布局问题
- 谁有李刚《android疯狂讲义》第二版光盘里的东西,我的光盘丢了。非常感谢
- MotionEvent.ACTION_MOVE 触发事件刷新频率太低
- 新手求助,搭建Android开发环境时出错,不知道该怎么办
- 各位前辈,请问开发Android智能电视应用能不能用模拟器?
- 求大侠帮忙啊关于HTTP连接问题
- 数据库读取乱码问题
// in the join UIs
Cursor c = resolver.query(RawContacts.CONTENT_URI,
JoinContactQuery.PROJECTION,
JoinContactQuery.SELECTION,
new String[]{String.valueOf(contactId1), String.valueOf(contactId2)}, null);..... 建议LZ还是多看看源码。
private void createRawContact(Intent intent) {
String accountName = intent.getStringExtra(EXTRA_ACCOUNT_NAME);
String accountType = intent.getStringExtra(EXTRA_ACCOUNT_TYPE);
String dataSet = intent.getStringExtra(EXTRA_DATA_SET);
List<ContentValues> valueList = intent.getParcelableArrayListExtra(EXTRA_CONTENT_VALUES);
Intent callbackIntent = intent.getParcelableExtra(EXTRA_CALLBACK_INTENT); ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
operations.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_NAME, accountName)
.withValue(RawContacts.ACCOUNT_TYPE, accountType)
.withValue(RawContacts.DATA_SET, dataSet)
.build()); int size = valueList.size();
for (int i = 0; i < size; i++) {
ContentValues values = valueList.get(i);
values.keySet().retainAll(ALLOWED_DATA_COLUMNS);
operations.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValues(values)
.build());
} ContentResolver resolver = getContentResolver();
ContentProviderResult[] results;
try {
results = resolver.applyBatch(ContactsContract.AUTHORITY, operations);
//此处跟进去到IContentProvider里还是不知道怎么操作数据库的??用啥联系上的?
} catch (Exception e) {
throw new RuntimeException("Failed to store new contact", e);
} Uri rawContactUri = results[0].uri;
callbackIntent.setData(RawContacts.getContactLookupUri(resolver, rawContactUri)); deliverCallback(callbackIntent);
}
举个例子:ContactSaveService::createRawContact-->ContentProvider::applyBatch--这个过程就是联系界面和数据库的过程,第一个参数uri在ContactsContract.java中实现,第二个参数数据的操作,在ContactsOperationBatch.java中实现
这个ContactsContract.AUTHORITY,就是之间连接的关键,可以在项目中搜索这个字段,就能到ContactsProvider2了
楼主,接分了。