参考代码:
import android.app.Activity;
import android.app.PendingIntent;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
import android.database.CursorWrapper;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.telephony.PhoneNumberUtils;
import android.telephony.gsm.SmsManager;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class App extends Activity {
private static final String TAG="App";
ListView listView;
ListAdapter adapter; //声明一个适配器名称
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
LinearLayout linearLayout=new LinearLayout(this);//实例化linearLayout,获得其对象
linearLayout.setOrientation(LinearLayout.VERTICAL);//设置布局方式,这里面是垂直分布
linearLayout.setBackgroundColor(Color.BLACK);//设置背景颜色
LinearLayout.LayoutParams param =
new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);//配置layout的长和宽 链接显示LayoutParams的用法
listView=new ListView(this);
listView.setBackgroundColor(Color.BLACK);
linearLayout.addView(listView,param);//动态添加View
this.setContentView(linearLayout);
//从数据库获取联系人姓名和电话号码
Cursor cur=this.getContentResolver().query(People.CONTENT_URI,null, null,null,null);
adapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cur,new String[]{People.NAME,People.NUMBER},new int[]{android.R.id.text1,android.R.id.text2});
//SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) 构造函数参数
this.startManagingCursor(cur);
listView.setAdapter(adapter);
//listView.setEmptyView(findViewById(R.id.empty));
listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
//openToast("滚动到:"+arg0.getSelectedItemId());
//短信发送
// PendingIntent pi = PendingIntent.getActivity(App.this,0,new Intent
(App.this,App.class),0);
// SmsManager sms = SmsManager.getDefault();
// sms.sendTextMessage("5554", null, "message", pi, null);
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
// TODO Auto-generated method stub
// String[] names=((CursorWrapper)listView.getItemAtPosition(position)).getColumnNames
();
//从指针的封装类中获得选中项的电话号码并拨号
CursorWrapper wrapper=(CursorWrapper)listView.getItemAtPosition(position);//返回值是Object类需要向下转型成CursorWrapper类型
int columnIndex=wrapper.getColumnIndex(People.NUMBER);//返回从0开始的索引,如果列名不存在将返回-1
if(!wrapper.isNull(columnIndex)){
String number=wrapper.getString(columnIndex);
Log.d(TAG,"number="+number);
// //判断电话号码的有效性
if(PhoneNumberUtils.isGlobalPhoneNumber(number)){
Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel://"+ number));
startActivity(intent);
}
}
}
});
}
private void openToast(String str){
Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
}
}
分享到:
相关推荐
在Android开发中,将多个联系人保存到通讯录是一个常见的需求。这通常涉及到对系统联系人API的使用,包括读取、创建和更新联系人信息。以下是对这一主题的详细阐述: 1. **Android权限管理**: 在Android中,访问...
在Android开发中,ListView是展示大量数据常用的组件之一,它能高效地管理视图复用,使得滚动流畅。本主题“Android ListView快速筛选联系人”主要涉及如何利用ListView实现高效的联系人筛选功能,同时结合搜索...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。在"android listview仿照微信联系人字母排序"这个项目中,我们将实现一个类似微信的联系人列表,用户可以通过字母快速定位并搜索联系人。这个...
在Android的ListView中实现多选,通常涉及到以下几个关键知识点: 1. **CheckedTextView**:这是Android提供的一个内置视图,它继承自TextView,并增加了复选框的功能。在ListView的每个列表项中使用...
在Android开发中,ListView是一种非常常见且重要的组件,它用于展示大量的数据列表,例如新闻、联系人、邮件等。在本教程中,我们将深入探讨如何利用ListView来浏览新闻。ListView的优势在于它可以动态加载数据,...
这会触发适配器内部的过滤逻辑,将符合条件的联系人显示在ListView中。 在适配器的`filter()`方法中,我们首先备份原始数据,然后遍历所有联系人,检查姓名是否包含输入的关键词(或以关键词的拼音开头)。如果是,...
对于获取联系人,我们需要`READ_CONTACTS`权限,如果要进行修改或删除操作,则还需要`WRITE_CONTACTS`权限: ```xml <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission ...
在Android开发中,ListView是一种常用的UI组件,常用于展示大量数据列表。在实现类似通讯录的应用时,为了方便用户快速定位联系人,通常会采用字母排序,并在侧边显示一个可滑动的字母索引栏,这个功能被称为“快速...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据的列表形式,通常用于创建如联系人列表、消息列表等界面。本篇文章将详细解析ListView的使用,并提供一个简单的ListView实现示例。 首先,我们...
在Android系统中,获取联系人信息是常见的功能需求,尤其对于社交类或通讯类应用来说,这是一项必不可少的功能。为了实现这一目标,开发者需要理解Android的权限管理、ContentResolver和ContactsContract类。以下是...
在Android开发中,ListView是一种常用的UI组件,常用于展示大量数据列表,如联系人管理界面。本实例将探讨如何在Android应用中实现一个基于ListView的联系人管理系统,并涉及两个Activity间的数据传递。以下是对相关...
在Android开发中,读取联系人并将其显示在ListView中是一项常见的需求,这通常涉及到用户界面(UI)设计、数据获取以及数据绑定等技术。在这个"Android项目-读取联系人结合listview.zip"中,我们可以学习到如何实现...
在Android开发中,联系人快速索引是一项常见且实用的功能,它使得用户能够迅速找到大量联系人中的特定条目。这个“联系人快速索引源码.zip”文件包含了一个实现这一功能的源代码示例。下面我们将深入探讨该功能的...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表,比如联系人、消息等。然而,如果一次性加载所有数据,不仅会消耗大量内存,也可能导致应用运行缓慢。因此,通常采用分页加载(Pagination)的...
- 由于涉及到读取和修改联系人信息,项目中必须在AndroidManifest.xml中声明`READ_CONTACTS`和`WRITE_CONTACTS`权限。 这个示例项目涵盖了Android开发中的多个关键点,对于学习如何使用ListView、处理系统通讯录...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常用于实现像联系人列表、消息列表等常见的用户界面。ListView通过高效的滚动性能和可复用的视图来优化内存使用,使得在有限的内存条件...
在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据列表,如新闻、联系人、邮件等。在这个“Android实现的ListView-ListViewAdapter(新闻列表事例)”中,我们将探讨如何利用ListView和ListView...
接下来,遍历Cursor获取联系人信息,并将其显示在ListView或者RecyclerView等组件上。例如: ```java if (cursor != null) { while (cursor.moveToNext()) { String name = cursor.getString(cursor....
在Android开发中,`ViewPager`和`ListView`是两种非常重要的组件,它们分别用于实现页面滑动和列表显示。在本示例中,我们将探讨如何将`ViewPager`和`ListView`结合起来,创建一个动态滚屏并展示数据的交互式应用。 ...
由于获取联系人数据可能耗时,为了保持界面流畅,通常会在后台线程(如AsyncTask)中执行查询操作,然后在主线程更新UI。 9. **适配不同Android版本**: 考虑到Android版本的碎片化,代码需要兼容不同的API级别,...