选择了要删除的联系人,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();
}
}
分享到:
相关推荐
在这个"Android 线程AsyncTask逐步在list中加入条目"的例子中,我们首先会创建一个`AsyncTask`子类,如`LoadDataTask`,继承自`AsyncTask`。`doInBackground()`方法将用于生成数据(可能是从网络请求或本地数据库...
下面是一个简单的示例,展示如何在`AsyncTask`中使用进度条: ```java public class ProgressTask extends AsyncTask, Integer, String> { private ProgressBar progressBar; private Context context; public...
2. **AsyncTask**:另一种常见的实现方式是使用AsyncTask,它是一个轻量级的异步任务类,特别适合于短时间的后台操作和UI更新。不过,由于AsyncTask的限制(如任务数量限制),在处理大量或持续的后台任务时,它可能...
在Android开发中,ProgressDialog是一个非常常见的组件,它用于在用户执行长时间操作时显示一个带有进度指示的对话框,比如文件下载、数据加载等。在这个"ProgressDialogApplication"项目中,我们将探讨如何在...
总结,"Android 例子"可能是一个关于如何在Android应用中实现文件下载功能的示例,涵盖了网络通信、多线程、UI更新、文件存储等多个核心知识点。通过学习这个例子,开发者能深入理解Android应用开发的关键技术和最佳...
当应用程序执行耗时操作(如网络请求)时,为提高用户体验,通常会显示一个ProgressDialog来告知用户程序正在运行并等待完成。开发者需要在代码中创建ProgressDialog实例,设置其消息和样式,然后在需要时显示和关闭...
在`AsyncTaskActivity2`中,我们首先初始化UI元素,包括一个下载按钮(`btnDown`)和一个用于显示图片的`ImageView`(`ivImage`)。我们还创建了一个`ProgressDialog`对象(`dialog`)来显示下载进度。 当用户点击...
以下是一个简单的使用AsyncTask加载网络图片的例子: ```java public class LoadImageTask extends AsyncTask, Integer, Bitmap> { private ImageView imageView; private ProgressDialog progressDialog; ...
需要注意的是,`AsyncTask`并不是线程安全的,不建议在同一个`Activity`中同时执行多个`AsyncTask`实例,因为这可能导致并发问题。对于复杂的异步操作或需要管理多个任务的情况,可能需要使用更强大的解决方案,如`...
"WheelProgressDialog"就是一个自定义View的例子,它扩展了基础的ProgressDialog类,提供了更个性化的显示效果。 2. **Android Layouts**: 自定义View通常涉及到布局的设计。开发者可能使用XML来定义View的结构,...
总的来说,这个项目涵盖了Android UI设计、本地数据存储、网络请求、异步任务、数据验证和安全性等多个方面,是一个全面展示Android应用开发技术的好例子。开发者可以从中学到如何创建用户友好的界面,实现安全的...
1. AlertDialog:这是最常用的对话框类型,通常包含标题、消息内容和一个或多个按钮。通过AlertDialog.Builder类来创建和定制,可以设置标题、消息、按钮文本以及按钮点击事件。 2. ProgressDialog:通常用于显示...
通过分析这个压缩包提供的源码,开发者可以学习到如何在Android应用中创建一个完整的远程登录系统,包括UI设计、网络请求、加载效果以及错误处理等多个关键方面。这对于初学者和有经验的开发者来说都是一个宝贵的...
综上所述,Android基于GeolocationAPI的基站定位涉及到网络通信、JSON解析、UI更新以及权限管理等多个方面,需要开发者对Android系统和网络编程有深入理解。在实际应用中,还需要考虑到不同设备、网络环境的差异,...
总之,"android下载带有进度条"的示例教程涵盖了网络请求、文件保存、UI更新等多个Android开发的基础知识点,对于初学者来说是一个很好的实践项目,有助于提升他们的编程技能。通过实际操作,开发者可以更好地理解和...
5. **关闭条目和流**:每次解压完一个条目后,记得调用`ZipInputStream.closeEntry()`关闭当前条目,最后使用`close()`方法关闭`ZipInputStream`和`OutputStream`,以释放资源。 以下是一个简单的解压示例代码片段...
3. **HTTP请求**:在示例代码中,通过`URL`、`openStream()`和`InputStreamReader`创建一个HTTP GET请求,获取天气数据。`URLEncoder.encode(city)`用于对城市名进行URL编码,防止特殊字符导致的错误。 4. **XML...