package com.xcontacts.activities;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.OperationApplicationException;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.provider.ContactsContract.CommonDataKinds.Note;
import android.provider.ContactsContract.CommonDataKinds.Organization;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.RawContactsEntity;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.Toast;
import com.xcontacts.activities.R;
import com.xcontacts.ui.EmailItemsContainer;
import com.xcontacts.ui.ImItemsContainer;
import com.xcontacts.ui.OrganizationItem;
import com.xcontacts.ui.OrganizationItemsContainer;
import com.xcontacts.ui.PhoneItemsContainer;
import com.xcontacts.ui.PostalItem;
import com.xcontacts.ui.PostalItemsContainer;
import com.xcontacts.ui.WebsiteItem;
import com.xcontacts.ui.WebsiteItemsContainer;
import com.xcontacts.ui.model.AbstractItem;
import com.xcontacts.utils.MyLog;
import com.xcontacts.utils.MyTextWachter;
// When the user chooses a new photo mark it as super primary
/**
* 编辑或添加联系人的界面
*
* @author Lefter
*/
public class EditContactActivity extends Activity implements
View.OnClickListener {
/**
* 用于存放Phone、Email、Im、Organization、Postal等容器的容器
*/
private LinearLayout mContainer;
/**
* 存放所有Phone信息的容器
*/
private PhoneItemsContainer mPhonesContainer;
/**
* 存放所有Email信息的容器
*/
private EmailItemsContainer mEmailsContainer;
/**
* 存放所有Postal信息的容器
*/
private PostalItemsContainer mPostalsContainer;
/**
* 存放所有Organization信息的容器
*/
private OrganizationItemsContainer mOrganizationsContainer;
/**
* 存放所有Im信息的容器
*/
private ImItemsContainer mImsContainer;
/**
* 存放所有Website信息的容器
*/
private WebsiteItemsContainer mWebsitesContainer;
/**
* 显示联系人的头像
*/
private ImageView mImageViewPhoto;
/**
* photo相关信息在data表中_id字段的值
*/
private long dataIdOfPhoto;
/**
* 用于存放联系人头像。用于数据库的插入和更新
*/
private ContentValues photoContentValues = new ContentValues();
/**
* 头像缓存用于判断用户更换的头像是否与原先的头像一样
*/
private Bitmap mPhotoBitmap;
/**
* 联系人是否有头像
*/
private boolean hasPhoto = false;
/**
* 是否改变了联系人的头像
*/
private boolean hasChangedPhoto = false;
/**
* FirstName(StructuredName.GIVEN_NAME)
*/
private EditText etFirstName;
/**
* LastName(StructuredName.FAMILY_NAME)
*/
private EditText etLastName;
/**
* name相关信息在data表中_id字段的值
*/
private long dataIdOfName;
/**
* 用于存放StructuredName相关的信息。用于数据库的插入和更新
*/
private ContentValues nameContentValues = new ContentValues();
/**
* 用于显示该联系人的昵称
*/
private EditText etNickname;
/**
* nickname相关信息在data表中_id字段的值
*/
private long dataIdOfNickname;
/**
* 用于存放该联系人的昵称信息。用于数据库的插入和更新
*/
private ContentValues nickNameContentValues = new ContentValues();
/**
* 用于显示该联系人的备注信息
*/
private EditText etNotes;
/**
* 备注相关信息在data表中_id字段的值
*/
private long dataIdOfNote;
/**
* 用于存放对该联系人的备注信息。用于数据库的插入和更新
*/
private ContentValues noteContentValues = new ContentValues();
private Button btnOk;// 保存
private Button btnCancel;// 取消
/** The launch code when picking a photo and the raw data is returned */
private static final int PHOTO_PICKED_WITH_DATA = 3021;
/** The launch code when taking a picture */
private static final int CAMERA_WITH_DATA = 3023;
private static final int ICON_SIZE = 96;
/**
* 照相机拍摄照片转化为该File对象
*/
private File mCurrentPhotoFile;
/**
* 使用照相机拍摄照片作为头像时会使用到这个路径
*/
private static final File PHOTO_DIR = new File(
Environment.getExternalStorageDirectory() + "/DCIM/Camera");
/**
* 编辑或新建联系人时传递过来的Intent对象
*/
private Intent intent;
/**
* 编辑联系人时,查询的到的该联系人的信息被保存在mCursor中
*/
private Cursor mCursor;
/**
* 新建联系人还是编辑联系人
*/
private static boolean isInsert = false;
/**
* 编辑联系人时,该联系人在raw_contacts表中的_id
*/
private static long rawContactId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 取消标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.edit_contact);
// 获得传递过来的Intent对象
intent = getIntent();
if (intent != null) {
MyLog.d("传递的Intent不为空");
final String action = intent.getAction();
MyLog.d("传递的Intent的Action:" + action);
// 根据Intent对象的Action判断是编辑联系人还是新建联系人
if (action.equals(Intent.ACTION_INSERT)) {// 添加联系人
isInsert = true;
init(true);
} else if (action.equals(Intent.ACTION_EDIT)) {// 编辑联系人
isInsert = false;
init(false);
bindViews();
}
} else {
MyLog.e("传递的Intent为空");
}
}
/**
* @return 新建还是编辑联系人
*/
public static boolean isInsert() {
return isInsert;
}
/**
* 初始化UI
*
* @param isInsert
* true,新建联系人;false,编辑联系人
*/
private void init(boolean isInsert) {
// 初始化显示头像的ImageView对象,并添加监听器
mImageViewPhoto = (ImageView) findViewById(R.id.imageViewPhoto);
mImageViewPhoto.setImageResource(R.drawable.ic_edit_contact);
mImageViewPhoto.setOnClickListener(this);
// 初始化FirstName、LastName、NickName、Notes对象.并为这四个EditText对象添加监听器
etFirstName = (EditText) findViewById(R.id.editTextFirstName);
etFirstName.addTextChangedListener(new MyTextWachter(
StructuredName.GIVEN_NAME, nameContentValues));
etLastName = (EditText) findViewById(R.id.editTextLastName);
etL
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Android 高仿基于android2.2(Froyo)的Contacts.zip项目安卓应用源码下载Android 高仿基于android2.2(Froyo)的Contacts.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
Android 高仿基于android2.2(Froyo)的Contacts.zip项目安卓应用源码下载 (112个子文件)
resources.ap_ 23KB
XContacts.apk 59KB
proguard.cfg 1KB
EditContactActivity.class 30KB
MainActivity.class 11KB
MyCursorAdapter.class 9KB
ContactsInOneGroup.class 8KB
GroupsActivity.class 8KB
ViewContactActivity.class 8KB
PostalItem.class 6KB
ImItemsContainer.class 5KB
OrganizationItem.class 5KB
WebsiteItemsContainer.class 5KB
OrganizationItemsContainer.class 5KB
PhoneItemsContainer.class 5KB
EmailItemsContainer.class 5KB
PostalItemsContainer.class 5KB
PhoneItem.class 4KB
MyDialog$1.class 3KB
ImItem.class 3KB
EmailItem.class 3KB
R$string.class 3KB
WebsiteItem.class 3KB
AbstractItem.class 2KB
ContactsInOneGroup$1.class 2KB
MainActivity$1.class 2KB
MyDialog$1$1.class 2KB
GroupsActivity$1.class 2KB
OrganizationItem$2.class 2KB
GroupsActivity$2.class 2KB
WebsiteItem$1.class 2KB
PostalItem$2.class 2KB
PhoneItem$2.class 2KB
EmailItem$2.class 2KB
ImItem$2.class 2KB
AbstractItemsContainer.class 2KB
MyDialog.class 2KB
MyTextWachter.class 2KB
EditContactActivity$1.class 2KB
EmailItem$1.class 1KB
PhoneItem$1.class 1KB
OrganizationItem$1.class 1KB
PostalItem$1.class 1KB
ImItem$1.class 1KB
R$id.class 1KB
MyLog.class 1KB
OrganizationItemsContainer$1.class 964B
WebsiteItemsContainer$1.class 934B
PostalItemsContainer$1.class 928B
GroupsActivity$3.class 926B
PhoneItemsContainer$1.class 922B
EmailItemsContainer$1.class 922B
ImItemsContainer$1.class 904B
MyDialog$1$2.class 846B
R.class 681B
R$array.class 632B
MyLinearLayout.class 624B
R$layout.class 611B
R$drawable.class 603B
R$color.class 516B
ContactItem.class 494B
R$attr.class 358B
.classpath 364B
classes.dex 80KB
EditContactActivity.java 43KB
MyCursorAdapter.java 15KB
MainActivity.java 10KB
R.java 8KB
ContactsInOneGroup.java 8KB
ViewContactActivity.java 8KB
PostalItem.java 8KB
GroupsActivity.java 7KB
OrganizationItem.java 6KB
PhoneItem.java 5KB
WebsiteItemsContainer.java 4KB
ImItem.java 4KB
ImItemsContainer.java 3KB
OrganizationItemsContainer.java 3KB
AbstractItem.java 3KB
PostalItemsContainer.java 3KB
EmailItemsContainer.java 3KB
PhoneItemsContainer.java 3KB
AbstractItemsContainer.java 3KB
EmailItem.java 3KB
MyDialog.java 3KB
WebsiteItem.java 3KB
MyTextWachter.java 1KB
MyLog.java 691B
MyLinearLayout.java 682B
ContactItem.java 317B
ic_launcher_contacts.png 5KB
ic_launcher_contacts.png 4KB
ic_btn_round_plus.png 2KB
ic_btn_round_plus.png 1KB
ic_edit_contact.png 1KB
ic_edit_contact.png 1KB
ic_contact_list_picture.png 1KB
ic_contact_list_picture.png 691B
ic_btn_round_minus.png 536B
ic_btn_round_minus.png 460B
共 112 条
- 1
- 2
资源评论
yxkfw
- 粉丝: 81
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Python和Selenium的jksb系统健康申报助手.zip
- (源码)基于HiEasyX库的学习工具系统.zip
- (源码)基于JSP+Servlet+JDBC的学生宿舍管理系统.zip
- (源码)基于Arduino和Raspberry Pi的自动化花园系统.zip
- (源码)基于JSP和Servlet的数据库管理系统.zip
- (源码)基于Python的文本相似度计算系统.zip
- (源码)基于Spring Boot和Redis的高并发秒杀系统.zip
- (源码)基于Java的Web汽车销售管理系统.zip
- (源码)基于Python的智能家居系统.zip
- (源码)基于Python和CPM模型的中文文本生成系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功