package com.android.contactsmanager;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import com.android.contactsmanager.bean.MyContacts;
import com.android.contactsmanager.dao.ContactsManagerDbAdater;
import com.android.contactsmanager.ui.PhotoEditorView;
public class EditContact extends Activity {
ContactsManagerDbAdater contactsManagerDbAdapter;
public static final String TAG = "EditContact";
// 用来标识请求照相功能的activity
private static final int CAMERA_WITH_DATA = 3023;
// 用来标识请求gallery的activity
private static final int PHOTO_PICKED_WITH_DATA = 3021;
// 拍照的照片存储位置
private static final File PHOTO_DIR = new File(Environment
.getExternalStorageDirectory()
+ "/DCIM/Camera");
private File mCurrentPhotoFile;//照相机拍照得到的图片
private PhotoEditorView mEditor;//头像
Cursor contactInfoCursor;//联系人信息
MyContacts contactAllInfoCache=null;//缓存联系人所有信息
ArrayAdapter<String> adapter;//缓存GroupSpinner数据
//各个组件
private EditText name;//姓名
private EditText phoneNumber;//号码
private Spinner groupSpinner;//组
private Button birthdayButton;//生日
private EditText address;//住址
private EditText email;//邮箱
private EditText information;//好友描述
private Button ok;//确定
private Button cancel;//取消
//用户所有信息
String _name;
byte[] img;//头像数据
String _phoneNumber;
String _groupSpinner;
String _birthdayButton;
String _address;
String _email;
String _information;
//联系人信息的索引值
int index_name=1;
int index_contactIcon=2;
int index_telePhone=3;
int index_groupName=4;
int index_birthday=5;
int index_address=6;
int index_email=7;
int index_description=8;
//int selectedGroupNameIndex;//记录用户选择的组的索引,从新的activity返回时用到
//activity处于两种状态,插入状态或者编辑状态
private static final int STATE_INSERT=0;//插入状态
private static final int STATE_EDIT=1;//编辑状态
private int state;//记录当前的状态
// 生日,年,月,日
private int mYear;
private int mMonth;
private int mDay;
String editContactName;//缓存要编辑的联系人
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.v(TAG,"onCreate");
setContentView(R.layout.editcontact);
contactsManagerDbAdapter=new ContactsManagerDbAdater(this);
contactsManagerDbAdapter.open();
initAllComponents();//初始化所有组件
initGroupSpinnerData();
Intent intent=getIntent();
String action=intent.getAction();
if(action.equals(Intent.ACTION_INSERT)){
state=STATE_INSERT;
}else if(action.equals(Intent.ACTION_EDIT)){
state=STATE_EDIT;
//下面就该取数据库里面的数据了
editContactName=intent.getStringExtra("name");
String sql="select * from contacts where name=?";
String selectionArgs[]={editContactName};
System.out.println(editContactName);
contactInfoCursor=contactsManagerDbAdapter.getCursorBySql(sql, selectionArgs);
startManagingCursor(contactInfoCursor);
//不知道为何只有加了下面的if语句到resume方法后才会正常执行
if(contactInfoCursor!=null && contactInfoCursor.getCount()>0){
System.out.println("<<<<<<<<<<<<<<<< test >>>>>>>>>>>>>>>>>>>");
}
}else{
Log.e(TAG, "Unknown action,program will exit...");
finish();
return;
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if(state == STATE_INSERT){
setTitle("新建联系人");
getNowTime();
String birthday=mYear+"-"+mMonth+"-"+mDay;
birthdayButton.setText(birthday);
}else if(state == STATE_EDIT){
setTitle("编辑联系人");
if(contactInfoCursor!=null && contactInfoCursor.getCount()>0){
System.out.println(">>>>>>>>>>>>>>>>>> gogogogo >>>>>>>>>>>>>>>>>>");
if(contactAllInfoCache==null){
contactInfoCursor.moveToFirst();
//得到数据库中的联系人信息
_name=contactInfoCursor.getString(1);
img=contactInfoCursor.getBlob(2);
_phoneNumber=contactInfoCursor.getString(3);
_groupSpinner=contactInfoCursor.getString(4);
_birthdayButton=contactInfoCursor.getString(5);
System.out.println(_birthdayButton);
initDateFromDb(_birthdayButton);
_address=contactInfoCursor.getString(6);
_email=contactInfoCursor.getString(7);
_information=contactInfoCursor.getString(8);
}else{
_name=contactAllInfoCache.getName();
//img已经在onActivityResult方法内赋了新值,这里再调用contactAllInfoCache的getContactIcon
//方法会把img给覆盖掉,所以就不再调用了
//img=contactAllInfoCache.getContactIcon();
_phoneNumber=contactAllInfoCache.getTelPhone();
_groupSpinner=contactAllInfoCache.getGroupName();
_birthdayButton=contactAllInfoCache.getBirthday();
_address=contactAllInfoCache.getAddress();
_email=contactAllInfoCache.getEmail();
_information=contactAllInfoCache.getDescription();
}
name.setText(_name);
mEditor.setPhotoBitmap(getBitmapFromByte(img));
phoneNumber.setText(_phoneNumber);
int groupIndex=adapter.getPosition(_groupSpinner);
groupSpinner.setSelection(groupIndex);
birthdayButton.setText(_birthdayButton);
address.setText(_address);
email.setText(_email);
information.setTextKeepState(_information);
System.out.println(">>>>>>>>>>>>>>>>>> end >>>>>>>>>>>>>>>>>>");
}
}
}
private void initDateFromDb(String birthdayButton2) {
System.out.println(birthdayButton2);
String args[]=birthdayButton2.split("-");
System.out.println(args.length);
mYear = Integer.valueOf(args[0]);
mMonth = Integer.valueOf(args[1]);
mDay = Integer.valueOf(args[2]);
}
//当从当前的Activity切换到另一个Activity时调用,切换过去时当前Activity并未结束(Destory)
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
Log.v(TAG, "record original data");
//缓存联系人信息
contactAllInfoCache=new MyContacts();
//得到最终用户信息
contactAllInfoCache.setName(name.getText().toString());
BitmapDrawable bd=(BitmapDrawable)mEditor.getDrawable();
Bitmap bitMap=bd.getBitmap();
contactAllInfoCache.setContactIcon(getBitmapByte(bitMap));
contactAllInfoCache.setTelPhone(phoneNumber.getText().toString());
contactAllInfoCache.setGroupName(groupSpinner.getSelectedItem().toString());
contactAllInfoCache.setBirthday(birthdayButton.getText().toString());
contactAllInfoCache.setAddress(address.getText().toString());
contactAllInfoCach
没有合适的资源?快使用搜索试试~ 我知道了~
Android应用源码之[安卓开源]仿QQ列表通讯录项目.zip项目安卓应用源码下载
共179个文件
png:103个
class:43个
xml:16个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 163 浏览量
2022-03-07
19:06:44
上传
评论
收藏 1.3MB ZIP 举报
温馨提示
Android应用源码之[安卓开源]仿QQ列表通讯录项目.zip项目安卓应用源码下载Android应用源码之[安卓开源]仿QQ列表通讯录项目.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
Android应用源码之[安卓开源]仿QQ列表通讯录项目.zip项目安卓应用源码下载 (179个子文件)
resources.ap_ 247KB
ContactsManager.apk 275KB
EditContact.class 19KB
ContactsManager.class 13KB
ContactsManagerDbAdater.class 8KB
ContactsManager$MyCursrTreeAdapter.class 4KB
EditContact$PhotoListener.class 4KB
ContactsManagerDbAdater$DatabaseHelper.class 3KB
ContactsManager$8.class 3KB
PhotoEditorView.class 3KB
ContactsManager$4.class 2KB
R$drawable.class 2KB
ContactsManager$MyCursrTreeAdapter$1.class 2KB
ContactsManager$MyCursrTreeAdapter$1$1.class 2KB
ContactsManager$MyCursrTreeAdapter$1$3.class 2KB
ContactsManager$MyCursrTreeAdapter$1$2.class 2KB
MyContacts.class 2KB
ContactsManager$3.class 2KB
ContactsManager$6.class 2KB
EditContact$2.class 2KB
EditContact$PhotoListener$2.class 2KB
ContactsManager$1.class 1KB
EditContact$PhotoListener$1.class 1KB
EditContact$1.class 1KB
EditContact$PhotoListener$3.class 1KB
ContactsManager$7.class 986B
ContactsManager$5.class 986B
ContactsManager$9.class 986B
ContactsManager$10.class 984B
R$id.class 974B
ContactsManager$2.class 963B
EditContact$6.class 958B
ContactsManager$11.class 954B
EditContact$7.class 928B
EditContact$3.class 911B
R$string.class 859B
EditContact$4.class 833B
EditContact$5.class 826B
R.class 651B
MyConstant.class 599B
R$layout.class 562B
R$style.class 425B
R$attr.class 367B
BuildConfig.class 363B
PhotoEditorView$EditorListener.class 284B
.classpath 475B
Thumbs.db 97KB
classes.dex 56KB
annotations-b8fe4e7e418233f7d0d4621ee82d7924.jar 943B
EditContact.java 23KB
ContactsManager.java 18KB
ContactsManagerDbAdater.java 9KB
R.java 6KB
PhotoEditorView.java 2KB
MyContacts.java 2KB
MyConstant.java 343B
BuildConfig.java 169B
1.png 180KB
default_bg.png 111KB
default_bg.png 111KB
sms_icon.png 5KB
sms_icon.png 5KB
email_icon.png 5KB
email_icon.png 4KB
call_icon.png 4KB
h004.png 4KB
h004.png 4KB
call_icon.png 4KB
h011.png 4KB
h011.png 4KB
edit_over.png 4KB
edit_over.png 4KB
h020.png 4KB
h020.png 4KB
h016.png 4KB
h016.png 4KB
h013.png 4KB
h013.png 4KB
h018.png 4KB
h018.png 4KB
h015.png 4KB
h015.png 4KB
h007.png 3KB
h007.png 3KB
h001.png 3KB
h001.png 3KB
h002.png 3KB
h002.png 3KB
h008.png 3KB
h008.png 3KB
h003.png 3KB
h003.png 3KB
h017.png 3KB
h017.png 3KB
h012.png 3KB
h012.png 3KB
h014.png 3KB
h014.png 3KB
h019.png 3KB
h019.png 3KB
共 179 条
- 1
- 2
资源评论
yxkfw
- 粉丝: 76
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功