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应用源码之高仿基于2.2(Froyo)的Contacts.zip (224个子文件)
resources.ap_ 23KB
resources.ap_ 23KB
XContacts.apk 59KB
XContacts.apk 59KB
proguard.cfg 1KB
proguard.cfg 1KB
EditContactActivity.class 30KB
EditContactActivity.class 30KB
MainActivity.class 11KB
MainActivity.class 11KB
MyCursorAdapter.class 9KB
MyCursorAdapter.class 9KB
ContactsInOneGroup.class 8KB
ContactsInOneGroup.class 8KB
GroupsActivity.class 8KB
GroupsActivity.class 8KB
ViewContactActivity.class 8KB
ViewContactActivity.class 8KB
PostalItem.class 6KB
PostalItem.class 6KB
ImItemsContainer.class 5KB
ImItemsContainer.class 5KB
OrganizationItem.class 5KB
OrganizationItem.class 5KB
WebsiteItemsContainer.class 5KB
WebsiteItemsContainer.class 5KB
OrganizationItemsContainer.class 5KB
OrganizationItemsContainer.class 5KB
PhoneItemsContainer.class 5KB
EmailItemsContainer.class 5KB
PhoneItemsContainer.class 5KB
EmailItemsContainer.class 5KB
PostalItemsContainer.class 5KB
PostalItemsContainer.class 5KB
PhoneItem.class 4KB
PhoneItem.class 4KB
MyDialog$1.class 3KB
MyDialog$1.class 3KB
ImItem.class 3KB
ImItem.class 3KB
EmailItem.class 3KB
EmailItem.class 3KB
R$string.class 3KB
R$string.class 3KB
WebsiteItem.class 3KB
WebsiteItem.class 3KB
AbstractItem.class 2KB
AbstractItem.class 2KB
ContactsInOneGroup$1.class 2KB
ContactsInOneGroup$1.class 2KB
MainActivity$1.class 2KB
MainActivity$1.class 2KB
MyDialog$1$1.class 2KB
MyDialog$1$1.class 2KB
GroupsActivity$1.class 2KB
GroupsActivity$1.class 2KB
OrganizationItem$2.class 2KB
OrganizationItem$2.class 2KB
GroupsActivity$2.class 2KB
GroupsActivity$2.class 2KB
WebsiteItem$1.class 2KB
WebsiteItem$1.class 2KB
PostalItem$2.class 2KB
PostalItem$2.class 2KB
EmailItem$2.class 2KB
PhoneItem$2.class 2KB
EmailItem$2.class 2KB
PhoneItem$2.class 2KB
ImItem$2.class 2KB
ImItem$2.class 2KB
AbstractItemsContainer.class 2KB
AbstractItemsContainer.class 2KB
MyDialog.class 2KB
MyDialog.class 2KB
MyTextWachter.class 2KB
MyTextWachter.class 2KB
EditContactActivity$1.class 2KB
EditContactActivity$1.class 2KB
EmailItem$1.class 1KB
PhoneItem$1.class 1KB
EmailItem$1.class 1KB
PhoneItem$1.class 1KB
OrganizationItem$1.class 1KB
OrganizationItem$1.class 1KB
PostalItem$1.class 1KB
PostalItem$1.class 1KB
ImItem$1.class 1KB
ImItem$1.class 1KB
R$id.class 1KB
R$id.class 1KB
MyLog.class 1KB
MyLog.class 1KB
OrganizationItemsContainer$1.class 964B
OrganizationItemsContainer$1.class 964B
WebsiteItemsContainer$1.class 934B
WebsiteItemsContainer$1.class 934B
PostalItemsContainer$1.class 928B
PostalItemsContainer$1.class 928B
GroupsActivity$3.class 926B
GroupsActivity$3.class 926B
共 224 条
- 1
- 2
- 3
资源评论
Soft_Leader
- 粉丝: 1508
- 资源: 2850
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功