选择了要删除的联系人,uriData; 调用DeleteMultipleContactResult(uriData);
private int num;
private void DeleteMultipleContactResult(ArrayList<Uri> uriData){
num = uriData.size();//获取要删除联系人的个数
final DialogInterface.OnClickListener deleteMultipleClickListener =
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which){
connect(uriData);
}
};
//show dialog.if ok,then delete multiple contacts
new AlertDialog.Builder(this)
.setTitle(R.string.deleteConfirmation_title)
.setIcon(android.R.drawable.ic_dialog_alert)
.setMessage(R.string.multipleContactDeleteConfirmation)
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(android.R.string.ok, deleteMultipleClickListener)
.show();
}
private void connect(ArrayList<Uri> uriData){
DeleteMultipleTask Task = new DeleteMultipleTask(this);
Task.execute(uriData);
}
class DeleteMultipleTask extends AsyncTask<ArrayList<Uri>,Integer,String>{
boolean mCanceled = false;
ProgressDialog dialog;
public DeleteMultipleTask(Context context){
dialog = new ProgressDialog(context);//删除过程中显示进度条
dialog.setButton(getString(android.R.string.cancel), new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int i){
dialog.dismiss();
mCanceled = true;
}
});
dialog.setCancelable(false);
dialog.setMax(num);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setTitle(R.string.dialog_delete_multiple);
dialog.show();
}
@Override
protected String doInBackground(ArrayList<Uri>... uriDatas) {
// TODO Auto-generated method stub
ArrayList<Uri> uriData = uriDatas[0];
ContentResolver resolver = getContentResolver();
for(int i = 0; i < num; i++){
if(!mCanceled){
mSelectedContactUri = uriData.get(i);
resolver.delete(RawContacts.CONTENT_URI,
RawContacts.CONTACT_ID + "=" + ContentUris.parseId(mSelectedContactUri),null);
dialog.incrementProgressBy(1);
}else{
break;
}
}
return null;
}
protected void onPostExecute(String result){
dialog.dismiss();
}
}