package xu.ye.view;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import xu.ye.R;
import xu.ye.bean.ContactBean;
import xu.ye.bean.GroupBean;
import xu.ye.uitl.BaseIntentUtil;
import xu.ye.view.adapter.ContactHomeAdapter;
import xu.ye.view.adapter.MenuListAdapter;
import xu.ye.view.other.SizeCallBackForMenu;
import xu.ye.view.sms.MessageBoxList;
import xu.ye.view.ui.MenuHorizontalScrollView;
import xu.ye.view.ui.QuickAlphabeticBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.AsyncQueryHandler;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
import android.provider.ContactsContract.Groups;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import com.google.gson.Gson;
public class HomeContactActivity extends Activity {
private MenuHorizontalScrollView scrollView;
private ListView menuList;
private View acbuwaPage;
private Button menuBtn;
private MenuListAdapter menuListAdapter;
private View[] children;
private LayoutInflater inflater;
private ContactHomeAdapter adapter;
private ListView personList;
private List<ContactBean> list;
private AsyncQueryHandler asyncQuery;
private QuickAlphabeticBar alpha;
private Button addContactBtn;
private Map<Integer, ContactBean> contactIdMap = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
inflater = LayoutInflater.from(this);
setContentView(inflater.inflate(R.layout.menu_scroll_view, null));
scrollView = (MenuHorizontalScrollView)findViewById(R.id.mScrollView);
menuListAdapter = new MenuListAdapter(this, queryGroup());
menuList = (ListView)findViewById(R.id.menuList);
menuList.setAdapter(menuListAdapter);
acbuwaPage = inflater.inflate(R.layout.home_contact_page, null);
menuBtn = (Button)this.acbuwaPage.findViewById(R.id.menuBtn);
personList = (ListView)this.acbuwaPage.findViewById(R.id.acbuwa_list);
alpha = (QuickAlphabeticBar)this.acbuwaPage.findViewById(R.id.fast_scroller);
asyncQuery = new MyAsyncQueryHandler(getContentResolver());
init();
menuBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
scrollView.clickMenuBtn(HomeContactActivity.this);
}
});
View leftView = new View(this);
leftView.setBackgroundColor(Color.TRANSPARENT);
children = new View[]{leftView, acbuwaPage};
scrollView.initViews(children, new SizeCallBackForMenu(this.menuBtn), this.menuList);
scrollView.setMenuBtn(this.menuBtn);
addContactBtn = (Button) findViewById(R.id.addContactBtn);
addContactBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Uri insertUri = android.provider.ContactsContract.Contacts.CONTENT_URI;
Intent intent = new Intent(Intent.ACTION_INSERT, insertUri);
startActivityForResult(intent, 1008);
}
});
startReceiver1();
}
private void init(){
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; // 联系人的Uri
String[] projection = {
ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.DATA1,
"sort_key",
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.PHOTO_ID,
ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY
}; // 查询的列
asyncQuery.startQuery(0, null, uri, projection, null, null,
"sort_key COLLATE LOCALIZED asc"); // 按照sort_key升序查询
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK){
if(MenuHorizontalScrollView.menuOut == true)
this.scrollView.clickMenuBtn(HomeContactActivity.this);
else
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
/**
* 数据库异步查询类AsyncQueryHandler
*
* @author administrator
*
*/
private class MyAsyncQueryHandler extends AsyncQueryHandler {
public MyAsyncQueryHandler(ContentResolver cr) {
super(cr);
}
/**
* 查询结束的回调函数
*/
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
if (cursor != null && cursor.getCount() > 0) {
contactIdMap = new HashMap<Integer, ContactBean>();
list = new ArrayList<ContactBean>();
cursor.moveToFirst();
for (int i = 0; i < cursor.getCount(); i++) {
cursor.moveToPosition(i);
String name = cursor.getString(1);
String number = cursor.getString(2);
String sortKey = cursor.getString(3);
int contactId = cursor.getInt(4);
Long photoId = cursor.getLong(5);
String lookUpKey = cursor.getString(6);
if (contactIdMap.containsKey(contactId)) {
}else{
ContactBean cb = new ContactBean();
cb.setDisplayName(name);
// if (number.startsWith("+86")) {// 去除多余的中国地区号码标志,对这个程序没有影响。
// cb.setPhoneNum(number.substring(3));
// } else {
cb.setPhoneNum(number);
// }
cb.setSortKey(sortKey);
cb.setContactId(contactId);
cb.setPhotoId(photoId);
cb.setLookUpKey(lookUpKey);
list.add(cb);
contactIdMap.put(contactId, cb);
}
}
if (list.size() > 0) {
setAdapter(list);
}
}
}
}
private void setAdapter(List<ContactBean> list) {
adapter = new ContactHomeAdapter(this, list, alpha);
personList.setAdapter(adapter);
alpha.init(HomeContactActivity.this);
alpha.setListView(personList);
alpha.setHight(alpha.getHeight());
alpha.setVisibility(View.VISIBLE);
personList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ContactBean cb = (ContactBean) adapter.getItem(position);
showContactDialog(lianxiren1, cb, position);
}
});
}
private String[] lianxiren1 = new String[] { "拨打电话", "发送短信", "查看详细","移动分组","移出群组","删除" };
//群组联系人弹出页
private void showContactDialog(final String[] arg ,final ContactBean cb, final int position){
new AlertDialog.Builder(this).setTitle(cb.getDisplayName()).setItems(arg,
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
Uri uri = null;
switch(which){
case 0://打电话
String toPhone = cb.getPhoneNum();
uri = Uri.parse("tel:" + toPhone);
Intent it = new Intent(Intent.ACTION_CALL, uri);
startActivity(it);
break;
case 1://发短息
String threadId = getSMSThreadId(cb.getPhoneNum());
Map<String, String> map = new HashMap<String, String>();
map.put("phoneNumber", cb.getPhoneNum());
map.put("threadId", threadId);
BaseIntentUtil.intentSysDefault(HomeContactActivity.this, MessageBoxList.class, map);
break;
case 2:// 查看�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android 完整的通讯录项目源码 (443个子文件)
all-wcprops 3KB
resources.ap_ 698KB
MyContact.apk 961KB
jarlist.cache 119B
HomeContactActivity.class 14KB
NewSMSActivity.class 10KB
HomeDialActivity.class 9KB
SelectContactsToSendAdapter.class 7KB
ContactHomeAdapter.class 6KB
HomeTabHostAcitivity.class 6KB
RexseeSMS.class 6KB
SelectContactsToSendActivity.class 6KB
QuickAlphabeticBar.class 5KB
T9Adapter.class 5KB
MAsyncTask.class 5KB
MessageBoxListAdapter.class 5KB
MessageBoxList.class 5KB
MenuHorizontalScrollView.class 5KB
R$drawable.class 4KB
HomeSMSAdapter.class 3KB
MenuListAdapter.class 3KB
HomeDialAdapter.class 3KB
NewSmsAdapter.class 3KB
ToPinYin.class 3KB
HomeContactActivity$4.class 3KB
BaseIntentUtil.class 3KB
T9Service.class 3KB
MessageBoxList$MyAsyncQueryHandler.class 3KB
HomeDialActivity$2.class 3KB
NewSMSActivity$5.class 3KB
NewSMSActivity$9.class 3KB
HomeContactActivity$MyAsyncQueryHandler.class 3KB
SelectContactsToSendActivity$MyAsyncQueryHandler.class 3KB
MyDateUtil.class 3KB
R$id.class 3KB
MenuHorizontalScrollView$MenuOnGlobalLayoutListener.class 3KB
HomeDialActivity$MyAsyncQueryHandler.class 3KB
T9Adapter$1.class 2KB
NewSMSActivity$3.class 2KB
NewSMSActivity$2.class 2KB
NewSmsAdapter$1.class 2KB
SelectContactsToSendActivity$4.class 2KB
NewSMSActivity$MyAsyncQueryHandler.class 2KB
HomeSMSActivity.class 2KB
ContactBean.class 2KB
HomeContactActivity$5.class 2KB
MenuListAdapter$1.class 2KB
CustomTextView.class 2KB
HomeSMSActivity$1.class 2KB
NewSMSActivity$MyListener.class 2KB
MessageBoxList$3.class 2KB
SMSBean.class 2KB
HomeDialAdapter$1.class 2KB
HomeContactActivity$3.class 2KB
T9Service$1.class 2KB
SelectContactsToSendActivity$3.class 2KB
NewSMSActivity$6.class 2KB
HomeContactActivity$BaseReceiver1.class 2KB
MessageBoxListAdapter$4.class 2KB
R$color.class 2KB
MyViewGroup.class 2KB
HomeDialActivity$2$1.class 1KB
CallLogBean.class 1KB
NewSMSActivity$10.class 1KB
MenuHorizontalScrollView$MenuOnGlobalLayoutListener$1.class 1KB
GroupBean.class 1KB
MessageBoxList$2.class 1KB
MessageBoxListAdapter$2.class 1KB
NewSMSActivity$8.class 1KB
HomeDialActivity$4.class 1KB
AnimationTabHost.class 1KB
MessageBean.class 1KB
HomeTabHostAcitivity$2.class 1KB
MyApplication.class 1KB
MessageBoxListAdapter$3.class 1KB
HomeContactActivity$2.class 1KB
R$layout.class 1KB
HomeDialActivity$5.class 1KB
SystemScreenInfo.class 1023B
HomeContactActivity$1.class 987B
T9Service$MyAsyncQueryHandler.class 959B
HomeDialActivity$3.class 944B
SizeCallBackForMenu.class 939B
QuickAlphabeticBar$1.class 913B
QuickAlphabeticBar$2.class 912B
MessageBoxListAdapter$1.class 910B
HomeSMSActivity$2.class 887B
SelectContactsToSendActivity$2.class 875B
HomeContactActivity$6.class 846B
MessageBoxList$1.class 832B
NewSMSActivity$1.class 791B
HomeDialActivity$1.class 788B
SelectContactsToSendAdapter$ViewHolder.class 755B
SelectContactsToSendActivity$1.class 746B
HomeTabHostAcitivity$1.class 680B
MenuListAdapter$1$1.class 675B
R$raw.class 668B
HomeDialAdapter$ViewHolder.class 666B
ContactHomeAdapter$ViewHolder.class 665B
NewSMSActivity$4.class 662B
共 443 条
- 1
- 2
- 3
- 4
- 5
资源评论
yangketao111
- 粉丝: 4
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功