package com.zymic.home;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class ContactList extends ListActivity {
private ListView contactList;
//
private Cursor contact_cursor;
private Cursor iphonenumber_cursor;
//
private List<String> phonenumbers=new ArrayList<String>();
private int contact_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//实例化ListView;
contactList=this.getListView();
//异步的方法将联系人的信息放入contactList;
new MyAsyncTask(this).execute(contactList);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
//参数v是
TextView tvid=(TextView) v.findViewById(R.id.idtv);
contact_id=Integer.valueOf(tvid.getText().toString());
//Toast.makeText(this, contact_id+"", Toast.LENGTH_SHORT).show();
iphonenumber_cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?", new String[]{String.valueOf(contact_id)}, null);
while(iphonenumber_cursor.moveToNext()){
phonenumbers.add(iphonenumber_cursor.getString(iphonenumber_cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
//R.layout.dialogtextview应该是不带有布局的只有一个TextView;否则会报错的;
//final ArrayAdapter arrayadapter=new ArrayAdapter(this, android.R.layout.test_list_item, phonenumbers);
final ArrayAdapter arrayadapter=new ArrayAdapter(this, R.layout.dialogtextview, phonenumbers);
//
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("电话号码");
builder.setAdapter(arrayadapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//得到选择的电话号码;
//此处选择实际上是在对话框的数据适配器中选择;
String phone_number=(String) arrayadapter.getItem(which);
//
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel://"+phone_number));
ContactList.this.startActivity(intent);
}
});
builder.show();
}
}
//
package com.zymic.home;
import android.content.Context;
import android.database.Cursor;
import android.os.AsyncTask;
import android.provider.ContactsContract;
import android.widget.BaseAdapter;
import android.widget.ListView;
public class MyAsyncTask extends AsyncTask<ListView, Void, BaseAdapter> {
private Context context;
private Cursor cursor;
private ListView lv;
//构造方法;
public MyAsyncTask(Context context){
this.context=context;
}
@Override
protected BaseAdapter doInBackground(ListView... params) {
//根据ContactsContract.Contacts.CONTENT_URI这个Uri查询出所有联系人对象的cursor;
cursor=context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
//
MyBaseAdapter myAdapter=new MyBaseAdapter(context,cursor);
lv=params[0];
if(myAdapter!=null){
return myAdapter;
}else{
return null;
}
}
@Override
protected void onPostExecute(BaseAdapter result) {
super.onPostExecute(result);
if(result!=null){
lv.setAdapter(result);
}
}
}
//
package com.zymic.home;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MyBaseAdapter extends BaseAdapter {
private Context context;
private Cursor cursor;
//构造方法;
public MyBaseAdapter(Context context,Cursor cursor){
this.context=context;
this.cursor=cursor;
}
@Override
public int getCount() {
return cursor.getCount();
}
@Override
public Object getItem(int arg0) {
return arg0;
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
//得到LayoutInflater对象;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
//将布局文件转化为视图;
View myview=inflater.inflate(R.layout.textview, null);
//找到视图myview中的TextView控件tv;
TextView tv=(TextView)myview.findViewById(R.id.tv);
//找到视图myview中的TextView控件tv_id;
TextView tvid=(TextView)myview.findViewById(R.id.idtv);
if(cursor.moveToPosition(arg0)){
tv.setText(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
tvid.setText(cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts._ID))+"");
return myview;
}
return null;
}
}
分享到:
相关推荐
NULL 博文链接:https://zymic.iteye.com/blog/737855
1.Android调用系统通讯录 2.选择联系人 3.拨打电话 4.添加 查询联系人
一个简单的使用Android Studio写的获取通讯录内容并且打电话发短信,如果安装完后APP闪退,请到设置中权限将相应的权限给他。
ZHContactManager - 通讯录操作:选择联系人、添加新联系人、添加到现有联系人;打电话、发短信、发邮件
3、通功能 用户在通录选择联系人进入联系详细信息界面,这时点击menu键打开通信功能框,选择打电话、发信息的功能进行操作。 4、菜单能 通过对menu按的点击,显示底部菜框,包含有增加查找、除、菜单、返回功能,...
2020中国华录杯·数据湖算法大赛—定向算法赛(吸烟打电话检测)第二名开源 作者:fire15 联系邮箱: 队伍名称:一个人要像一支队伍 成绩: 初赛A榜:99.84 / 第二名 (两周周冠军) 初赛B榜:84.09 / 第七名 复赛A...
访问系统中所有联系人并将其以列表形式展示出来,长按联系人姓名会弹出菜单显示添加、删除、排号等相关操作,选择菜单执行相关操作,如选择删除将删除选中的联系人,选择拔号将拔打该号码。 一、思路: 在...
/*在文本模式中选择新的字符颜色*/ gotoxy(10,5); /*在文本窗口中设置光标*/ cprintf(" The telephone-book Management System \n"); gotoxy(10,8); cprintf(" *************************Menu*********************...
可以自定义选择打印单位名称、地址、邮编、联系人、手机、电话、省份、地市、发件日期及发件人签名; 使用者可自行设计快递单打印格式。只需要拿直尺在快递单上量好,填进数据即可。设计好的格式可以导入导出; ...
软件会判断用户是否想要打电话,然后去判断用户是否已经说出了需要打电话给谁,若是没有说出,软件会提示用语音和界面提示用户说出一个联系人或是在界面中选择一个你想要打电话的联系人。最后软件将你所传达给软件的...
打印店: 打印店账号,登录密码,打印店名称,打印店照片,打印店介绍,成立日期,联系人,联系电话,打印店地址 套餐类别: 类别id,类别名称,类别描述 打印服务: 商品id,套餐类别,服务名称,服务图片,套餐价格,服务描述,打印...
三、查看提交的订单状态、记录(订单状态:已提交、已确认、已打印、已拒绝),订单的详情中可以看到下订单填写的(患者姓名、住院号、身份证号、出院日期、联系人电话)这些信息。 四、反馈投诉,投诉填写投诉内容...
本软件的功能简述:可以新增、修改、删除、查询联系人的电话号码、通讯地址等信息,后续版本将联系人的信息进行加密存档显示。那时联系人的信息数据即使被他人盗用也没有用。 最后,恭候大家就本软件的相关完善问题...
本软件的功能简述:可以新增、修改、删除、查询联系人的电话号码、通讯地址等信息,后续版本将联系人的信息进行加密存档显示。那时联系人的信息数据即使被他人盗用也没有用。 最后,恭候大家就本软件的相关完善问题...
本程序编写环境.NET 4.0、 VS2010,语言为C#,通过引用... [字段1:联系人] [字段2:联系电话] 根据检测出的字段编辑Word模板文件,添加相应字段的书签到模板文件,然后选择模板文件,最后批量生成Word文档到指定文件夹。
修改联系人:提示用户输入要进行修改操作的联系人的信息,如果在文件中有该联系人存在,则将该电话号码所对应的姓名、电话号码、简介以及得票数所对应文件中加以修改。由系统提示是否继续进行修改操作,让用户可多次...
毕业设计,微信小程序,基于SSM+MySql开发的微信小程序校园互助打印平台,内含...打印店: 打印店账号,登录密码,打印店名称,打印店照片,打印店介绍,成立日期,联系人,联系电话,打印店地址 套餐类别: 类别id,类别名称
修改联系人:提示用户输入要进行修改操作的联系人的信息,如果在文件中有该联系人存在,则将该电话号码所对应的姓名、电话号码、简介以及得票数所对应文件中加以修改。由系统提示是否继续进行修改操作,让用户可多次...
5、修改收、发件人电话、手机多行输入。 6、修正地址识别功能。 7、修正历史单据保存丢失的问题。 关于打印机打印连续纸的准备工作 打印连续纸的准备工作: 1、控制面板-->打印机与硬件-->打印机与传真-->文件-->...