您的位置:首页 > 编程语言 > PHP开发

ContentProvider

2016-03-15 19:26 661 查看
URI:统一资源标识符



A: 前缀表明数据受控于一个内容提供者。它从不修改,也就是schema

B: 是指在AndroidManifest.xml中我们注册的provider中的android:authorities属性所对应的

C: 具体操作于哪个条目

D: 具体指定到哪个条目下的哪条记录(#表示通配符)



MainActivity

package com.example.day0315;

import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.util.Log;

public class MainActivity extends Activity {
private String TAG = "MainActivity";
private List<Person> persons = new ArrayList<Person>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

query();
insert();

}

//插入一条联系人
private void insert() {
ContentResolver cr = getContentResolver();
ContentValues cv = new ContentValues();
Uri uri = cr.insert(RawContacts.CONTENT_URI, cv);
Long raw_content_id = ContentUris.parseId(uri);
cv.clear();
//插入联系人
cv.put(StructuredName.RAW_CONTACT_ID, raw_content_id);
cv.put(StructuredName.DISPLAY_NAME, "神秘超人223");
cv.put(StructuredName.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
uri = cr.insert(Data.CONTENT_URI, cv);
//插入电话
cv.clear();
cv.put(Phone.RAW_CONTACT_ID, raw_content_id);
cv.put(Phone.NUMBER, "2333333333");
cv.put(Phone.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
uri = cr.insert(Data.CONTENT_URI, cv);

}

//查询联系人的ID,姓名,电话
private void query() {
ContentResolver cr = getContentResolver();
// 查询联系人
Cursor c = cr.query(Contacts.CONTENT_URI, new String[] { Contacts._ID,Contacts.DISPLAY_NAME }, null, null, null);
Person person = null;
while (c.moveToNext()) {
int _id = c.getInt(c.getColumnIndex(Contacts._ID));
String display_name = c.getString(c.getColumnIndex(Contacts.DISPLAY_NAME));
String phone = "没有电话";
//根据联系人ID来查看电话号码
Cursor c1 = cr.query(Phone.CONTENT_URI,new String[] { Phone.NUMBER },Phone.CONTACT_ID + "=" + _id, null, null);
if (c1.moveToNext()) {
phone = c1.getString(c1.getColumnIndex(Phone.NUMBER));
}
person = new Person(_id, display_name, phone);
persons.add(person);
c1.close();
}
c.close();
//打印信息
for (Person p : persons) {
Log.v(TAG, p.toString());
}

}

}


Person(实体类)

private int _id;
private String display_name;
private String phone;


权限

<!--读取权限  -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!--写入权限 -->
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>


自定义Contentprovider?

package com.example.day0315;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;

public class MyContentProvicer extends ContentProvider{

//在ContentProvider被创建后调用
@Override
public boolean onCreate() {
// TODO Auto-generated method stub
return false;
}

//根据URI查询出selection指定条件所匹配的全部记录,并可以指定排序方式(Order)
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// TODO Auto-generated method stub
return null;
}

//返回当前URI的MIME类型
//如果该URI对应的数据可能包括多条记录,那么MIME类型字符串就是以vnd.android.dir/开头
//如果该URI对应的数据只有一条数据,该MIME类型字符串就是以              vnd.android.cursor.item/开头

@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}

//根据URI插入values
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
return null;
}

//根据URI删除selection指定条件所匹配的全部记录
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}

//根据URI修改selection指定的条件所匹配的全部记录
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}

}


转载于:http://www.imooc.com/learn/179
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: