public class MyContentProvider extends ActionBarActivity {
private final int REQUEST_CONTACT = 1;
private int DIALOG = 0;
private String contactId,contactName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_content_provider);
Button bt = (Button) findViewById(R.id.buttonRead);
Button btSelect = (Button) findViewById(R.id.buttonSelect);
View.OnClickListener ocl = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.buttonRead:
//读取联系人信息
readContact();
break;
case R.id.buttonSelect:
//打开通信录并返回选择的联系人信息
selectContact();
break;
}
}
};
bt.setOnClickListener(ocl);
btSelect.setOnClickListener(ocl);
}
private void readContact(){
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
if(cursor.moveToFirst()){
int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
do{
String contactId = cursor.getString(idColumn);
String displayName = cursor.getString(displayNameColumn);
Toast.makeText(MyContentProvider.this, "联系人姓名:"+ displayName,Toast.LENGTH_LONG).show();
int phoneCount = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if(phoneCount > 0){
Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="+contactId,null,null);
if(phoneCursor.moveToFirst()){
do{
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(MyContentProvider.this,"联系人电话:"+phoneNumber,Toast.LENGTH_SHORT).show();
}while(phoneCursor.moveToNext());
}
}
}while (cursor.moveToNext());
}
}
private void selectContact(){
//打开通信录
Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,REQUEST_CONTACT);
}
@Override
//处理返回通信结果
protected void onActivityResult(int requestCode,int resultCode,Intent data){
//判断请求码
if(requestCode == REQUEST_CONTACT){
if(resultCode == RESULT_OK){
if(data == null) return;
//获取返回的数据
Uri result = data.getData();
contactId = result.getLastPathSegment();
contactName = getPhoneContacts(contactId);
showDialog(DIALOG);
}
}
}
//获取联系人名称
private String getPhoneContacts(String contactId){
Cursor cursor = null;
//联系人Uri
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String name = "";
try{
//查询联系人
cursor = getContentResolver().query(uri,null,ContactsContract.Contacts._ID + "="+contactId,null,null);
if(cursor.moveToFirst()){
name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
}
}catch(Exception e){
name = "";
e.printStackTrace();
}finally {
if(cursor != null){
cursor.close();
}
}
return name;
}
protected Dialog onCreateDialog(int id){
if(id == 0){
String message = "";
if(contactName != null && !contactName.equals("")){
message = contactName + "is selected?";
}else{
message = "Did not select any contact.";
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(message)
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// finish();
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
return builder.create();
}else {
return null;
}
}
private final int REQUEST_CONTACT = 1;
private int DIALOG = 0;
private String contactId,contactName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_content_provider);
Button bt = (Button) findViewById(R.id.buttonRead);
Button btSelect = (Button) findViewById(R.id.buttonSelect);
View.OnClickListener ocl = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.buttonRead:
//读取联系人信息
readContact();
break;
case R.id.buttonSelect:
//打开通信录并返回选择的联系人信息
selectContact();
break;
}
}
};
bt.setOnClickListener(ocl);
btSelect.setOnClickListener(ocl);
}
private void readContact(){
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
if(cursor.moveToFirst()){
int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
int displayNameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
do{
String contactId = cursor.getString(idColumn);
String displayName = cursor.getString(displayNameColumn);
Toast.makeText(MyContentProvider.this, "联系人姓名:"+ displayName,Toast.LENGTH_LONG).show();
int phoneCount = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if(phoneCount > 0){
Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="+contactId,null,null);
if(phoneCursor.moveToFirst()){
do{
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(MyContentProvider.this,"联系人电话:"+phoneNumber,Toast.LENGTH_SHORT).show();
}while(phoneCursor.moveToNext());
}
}
}while (cursor.moveToNext());
}
}
private void selectContact(){
//打开通信录
Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,REQUEST_CONTACT);
}
@Override
//处理返回通信结果
protected void onActivityResult(int requestCode,int resultCode,Intent data){
//判断请求码
if(requestCode == REQUEST_CONTACT){
if(resultCode == RESULT_OK){
if(data == null) return;
//获取返回的数据
Uri result = data.getData();
contactId = result.getLastPathSegment();
contactName = getPhoneContacts(contactId);
showDialog(DIALOG);
}
}
}
//获取联系人名称
private String getPhoneContacts(String contactId){
Cursor cursor = null;
//联系人Uri
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String name = "";
try{
//查询联系人
cursor = getContentResolver().query(uri,null,ContactsContract.Contacts._ID + "="+contactId,null,null);
if(cursor.moveToFirst()){
name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
}
}catch(Exception e){
name = "";
e.printStackTrace();
}finally {
if(cursor != null){
cursor.close();
}
}
return name;
}
protected Dialog onCreateDialog(int id){
if(id == 0){
String message = "";
if(contactName != null && !contactName.equals("")){
message = contactName + "is selected?";
}else{
message = "Did not select any contact.";
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(message)
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// finish();
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
return builder.create();
}else {
return null;
}
}