一:访问内容提供器已经提供的数据
内容URI:
1:协议声明//包名.权限/路径 eg: content:// com.example.test.provider/tablename
2:协议声明//包名.权限/路径/id eg: content:// com.example.test.provider/tablename/1 访问tablename表下ID为1的记录
将内容URI变为URI对象: Uri uri=Uri.parse("content:// com.example.test.provider/tablename");
Cursor cursor=getContentResolver().query(uri,projection,selection,selectionArgs,sortOrder);
第二个参数,projection,这个参数告诉Provider要返回的列的内容(列Column)
第三个参数,selection,设置条件,相当于SQL语句中的where。
第四个参数,selectionArgs,这个参数是要配合第三个参数使用的,如果你在第三个参数里面有?,那么你在selectionArgs写的数据就会替换掉?
第五个参数,sortOrder,按照什么进行排序,相当于SQL语句中的Order by columnName DESE/ASC;
eg:
cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,null, null, android.provider.ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC");//ASC DESC 记得加空格
直接上个读取手机联系人的例子吧:
package com.example.contactstest;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
ListView contactsListView;
List<String> contacts=new ArrayList<String>();
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
contactsListView=(ListView) findViewById(R.id.contacts_view);
adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contacts);
contactsListView.setAdapter(adapter);
readContacts();
}
private void readContacts()
{
Cursor cursor=null;
try{
cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,null, null, android.provider.ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC");//ASC DESC 记得加空格
while(cursor.moveToNext())
{
//String displayName=cursor.getColumnName(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String displayName=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String contactsNumber=displayName+"\n"+number;
Log.d("AAA", contactsNumber);
contacts.add(contactsNumber);
}
}catch(Exception e)
{
e.printStackTrace();
}finally
{
if(cursor!=null)
{
cursor.close();
}
}
}
}