package com.example.sharingcontact;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
public class AboutActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.about);
}
}
package com.example.sharingcontact;
import com.example.sharingcontact.db.ContactInfo;
import com.example.sharingcontact.db.Contacts;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ImageView.ScaleType;
import android.widget.ViewSwitcher.ViewFactory;
public class AddActivity extends Activity implements ViewFactory {
EditText et_name;
EditText et_telePhone;
EditText et_Phone;
EditText et_nickname;
EditText et_company;
EditText et_address;
Button btn_save;
Button btn_return;
TextView tv_title;
int privacy;//用于判断添加的用户是不是保密的
ImageButton imageButton;//头像按钮
View imageChooseView;//图像选择的视图
AlertDialog imageChooseDialog;//头像选择对话框
Gallery gallery;//头像的Gallery
ImageSwitcher is;//头像的ImageSwitcher
int currentImagePosition;//用于记录当前选中图像在图像数组中的位置
int previousImagePosition;//用于记录上一次图片的位置
boolean imageChanged;//判断头像有没有变化
/**
* 所有的图像图片
*/
private int[] images
= new int[]{R.drawable.icon
,R.drawable.image1,R.drawable.image2,R.drawable.image3
,R.drawable.image4,R.drawable.image5,R.drawable.image6
,R.drawable.image7,R.drawable.image8,R.drawable.image9
,R.drawable.image10,R.drawable.image11,R.drawable.image12
,R.drawable.image13,R.drawable.image14,R.drawable.image15
,R.drawable.image16,R.drawable.image17,R.drawable.image18
,R.drawable.image19,R.drawable.image20,R.drawable.image21
,R.drawable.image22,R.drawable.image23,R.drawable.image24
,R.drawable.image25,R.drawable.image26,R.drawable.image27
,R.drawable.image28,R.drawable.image29,R.drawable.image30};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在标题上添加按钮
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.add);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titleitem);
et_name = (EditText)findViewById(R.id.name);
et_nickname = (EditText) findViewById(R.id.nickname);
et_Phone = (EditText)findViewById(R.id.phone);
et_telePhone = (EditText)findViewById(R.id.telephone);
et_company = (EditText)findViewById(R.id.company);
et_address = (EditText)findViewById(R.id.address);
btn_save = (Button) findViewById(R.id.btn_titlesave);
btn_return = (Button)findViewById(R.id.btn_titlecancle);
tv_title = (TextView) findViewById(R.id.tv_title);
imageButton = (ImageButton)findViewById(R.id.image_button);
/**
* 响应点击事件
*/
btn_save.setText("保存");
tv_title.setText("添加联系人");
btn_save.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
savecontact();
}
});
btn_return.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
imageButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
loadImage();//为gallery装载图片
initImageChooseDialog();//初始化imageChooseDialog
imageChooseDialog.show();
}
});
}
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_BACK) {
Dialog dialog = new AlertDialog.Builder(AddActivity.this) // 实例化对象
//.setIcon(R.drawable.pic_m) // 设置显示图片
.setMessage("是否保存联系人?") // 设置显示内容
.setPositiveButton("确定", // 增加一个确定按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
savecontact();
setResult(3);
finish();
// AddActivity.this.finish() ; // 程序结束
}
}).setNegativeButton("取消", // 增加取消按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
finish();
}
}).create(); // 创建Dialog
dialog.show(); // 显示对话框
//setResult(3);
//finish();
// Intent intent = new Intent(AddActivity.this,MainActivity.class);
// startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}
public void savecontact(){
String name = et_name.getText().toString();
//判断姓名是否为空
if(name.trim().equals("")) {
Toast.makeText(AddActivity.this, "姓名不许为空", Toast.LENGTH_LONG).show();
return;
}
//从表单上获取数据
String phone = et_Phone.getText().toString();
String nickname = et_nickname.getText().toString();
String telephone = et_telePhone.getText().toString();
String company = et_company.getText().toString();
String address = et_address.getText().toString();
int imageid;
//判断头像是否改变,若改变,则用当前的位置,若没有改变,则用前一回的位置
if(imageChanged) {
imageid = images[currentImagePosition%images.length];
} else {
imageid = images[previousImagePosition%images.length];
}
// 新建一个联系人数据库操作对象
Contacts c = new Contacts(AddActivity.this);
// 创建一个联系人信息
ContactInfo infoInsert = new ContactInfo(name, nickname, phone, telephone, company, address,imageid);
// 保存一个联系人信息
c.insertContacts(infoInsert);
Toast toast=Toast.makeText(getApplicationContext(), "联系人添加成功", Toast.LENGTH_SHORT);
toast.show();
//Intent intent = new Intent(AddActivity.this,MainActivity.class);
//startActivity(intent);
finish();
}
public void loadImage() {
if(imageChooseView == null) {
LayoutInflater li = LayoutInflater.from(AddActivity.this);
imageChooseView = li.inflate(R.layout.imageswitch, null);
//通过渲染xml文件,得到一个视图(View),再拿到这个View里面的Gallery
gallery = (Gallery)imageChooseView.findViewById(R.id.img_gallery);
//为Gallery装载图片
gallery.setAdapter(new ImageAdapter(this));
gallery.setSelection(images.length/2);
is = (ImageSwitcher)imageChooseView.findViewById(R.id.image_switcher);
is.setFactory(this);
is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
//卸载图片的动画效果
is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
gallery.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
//当前的头像位置为选中的位置
currentImagePosition = arg2;
//为ImageSwitcher设置图像
is.setImageResource(images[arg2 % images.length]);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}});
}
}
/**
* 自定义Gallery的适配器
*
*/
class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
/**
* gallery从这个方法中拿到image
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(context);
iv.setImageResource(images[position%images.length]);
iv.setAdjustViewBounds(true);
iv.setLayoutParams(new Gallery.LayoutParams(80,80));
iv.setPadding(15, 10, 15, 10);
return iv;
}
}
@Override
public View makeView() {
ImageView view = new ImageView(this);
view.setBackgroundColor(0xff000000);
view.setScaleType(ScaleType.FIT_CENTER);
view.setLayoutParams(new ImageSwitcher.LayoutParams(90,90));
return view;
}
public void initImageChooseDialog() {
if(imageChooseDialog == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("请选择图像")
.setView(imageChooseView).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
imageChanged = true;
previousImagePosition = currentImagePosition;
imageButton.setImageResource(images[currentImagePosition%images.length]);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
currentImagePosition = previousImagePosition;
}
});
imageChooseDialog = builder.create();
}
}
}
/*package com.example.shareingcontact;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
public class AddActivity extends Activity {
Button btn_cancell;
Button btn_save;
ImageButton btn_ImageButton;
AlertDialog imagechooseDialog;
int position;
private int[] images
= new int[]{R.drawable.icon
,R.drawable.image1,R.drawable.image2,R.drawable.image3
,R.drawable.image4,R.drawable.image5,R.drawable.image6
,R.drawable.image7,R.drawable.image8,R.drawable.image9
,R.drawable.image10,R.drawable.image11,R.drawable.image12
,R.drawable.image13,R.drawable.image14,R.drawable.image15
,R.drawable.image16,R.drawable.image17,R.drawable.image18
,R.drawable.image19,R.drawable.image20,R.drawable.image21
,R.drawable.image22,R.drawable.image23,R.drawable.image24
,R.drawable.image25,R.drawable.image26,R.drawable.image27
,R.drawable.image28,R.drawable.image29,R.drawable.image30};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.add);
btn_cancell = (Button) findViewById(R.id.btn_cancell);
btn_save =(Button) findViewById(R.id.btn_save);
btn_ImageButton = (ImageButton) findViewById(R.id.image_button);
btn_ImageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
initImagechooseDialog();
imagechooseDialog.show();
}
private void initImagechooseDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(AddActivity.this);
builder.setTitle("请选择图片");
LayoutInflater inflater = LayoutInflater.from(AddActivity.this);
View view = inflater.inflate(R.layout.imageswitch, null);
Gallery gallery = (Gallery) findViewById(R.id.img_gallery);
gallery.setAdapter(new ImageAdapter(null));
ImageSwitcher is = (ImageSwitcher) findViewById(R.id.image_switcher);
builder.setView(view);
imagechooseDialog = builder.create();
}
class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context context){
this.context = context;
}
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
ImageView iv = new ImageView(context);
iv.setImageResource(images[position]);
iv.setAdjustViewBounds(true);
iv.setLayoutParams(new LayoutParams(80,80));
iv.setPadding(15, 10, 15, 10);
return iv;
}}
});
btn_cancell.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
finish();
}
});
btn_save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
finish();
}
});
}
}
*/
package com.example.sharingcontact;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
public class ExitDialog {
public static void exitDialog(final Activity activity) {
Dialog dialog = new AlertDialog.Builder(activity) // 实例化对象
//.setIcon(R.drawable.pic_m) // 设置显示图片
.setTitle("程序退出?") // 设置显示标题
.setMessage("您确定要退出本程序吗?") // 设置显示内容
.setPositiveButton("确定", // 增加一个确定按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
activity.finish() ; // 程序结束
}
}).setNegativeButton("取消", // 增加取消按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
}
}).create(); // 创建Dialog
dialog.show(); // 显示对话框
}
}
package com.example.sharingcontact;
import android.content.ContentResolver;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.provider.ContactsContract.CommonDataKinds.Phone;
public class Import {
/*
private void getPhoneContacts() {
ContentResolver cr = getContentResolver();
//取得电话本中开始一项的光标
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
// 取得联系人名字
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String name = cursor.getString(nameFieldColumnIndex);
// string += (name);
// 取得联系人ID
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
+ contactId, null, null);
// 取得电话号码(可能存在多个号码)
while (phone.moveToNext())
{
String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// string += (":" + strPhoneNumber);
System.out.println("$$$获得联系人名字: " + name);
System.out.println("$$$获得联系人电话: " + strPhoneNumber);
System.out.println("=========================================");
//先判断是否存在此人
System.out.println("name--->"+name);
if(!db.Query(name)) {
db.Insert(name, strPhoneNumber, null, null, null,null) ;
System.out.println("============可以导入--------------");
} else {
// db.Insert(name, strPhoneNumber, null, null, null) ;
System.out.println("==========已经存在此人-------------");
}
}
// string += "\n";
phone.close();
}
cursor.close();
}
*/
}
package com.example.sharingcontact;
import java.io.*;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import com.example.sharingcontact.R;
import com.example.sharingcontact.db.ContactInfo;
import com.example.sharingcontact.db.Contacts;
import com.example.sharingcontact.db.DatabaseOperation;
import com.example.sharingcontact.ExitDialog;
import android.opengl.Visibility;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.SpannableStringBuilder;
import android.text.TextWatcher;
import android.text.style.UpdateLayout;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
TextView tv_title;
GridView gv_menu;
ListView lv;
ArrayList<HashMap<String,String>> list;
Contacts userlist;
SimpleAdapter adapter;
SimpleAdapter searchadapter;
EditText et_search;
int ifsearch=0;
LinearLayout searchLinearout;
Button localserach;
Button onlineserach;
int len;
temp[] result;
String condition;//搜索框内容
//同步对话框
AlertDialog.Builder builder;
EditText et_phone;
CheckBox cb_share;
EditText et_password;
String phone;
String password;
int share;
//更多选项 的对话框
AlertDialog mainMenuDialog;
//更多选项的菜单
View mainMenuView;
GridView gv_more;
AlertDialog confirmDialog;
ProgressDialog progressDialog;
//存储标记条目的_id号
ArrayList<Integer> deleteId;
ContactInfo[] mycontact;
contact[] getcontact;
@Override
protected void onResume() {
super.onResume();
loadUserList();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
//设置title格式
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titleitem);
Button btn_titlecancle = (Button) findViewById(R.id.btn_titlecancle);
Button btn_titlesave = (Button) findViewById(R.id.btn_titlesave);
final TextView tv_title = (TextView) findViewById(R.id.tv_title);
btn_titlecancle.setVisibility(View.GONE);
btn_titlesave.setVisibility(View.GONE);
tv_title.setText("联系人列表");
userlist = new Contacts(MainActivity.this);
loadMenu();
lv =(ListView) findViewById(R.id.lv_userlist);
loadUserList();
//单击LISTVIEW打开修改界面
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
HashMap item = (HashMap)arg0.getItemAtPosition(arg2);
Intent intent = new Intent(MainActivity.this, ModifyActivity.class);
ContactInfo user = new ContactInfo();
Object kk= item.get("id");
// Log.d("test", (String) item.get("id"));
if( item.get("id") != null){
user.ContactID = Integer.parseInt(String.valueOf(item.get("id")));
}else{
user.ContactID = 5;
}
user.Name = String.valueOf(item.get("name"));
user.SubName = String.valueOf(item.get("nickname"));
user.MobileTel = String.valueOf(item.get("phone"));
user.FixedTel = String.valueOf(item.get("telephone"));
user.Company = String.valueOf(item.get("company"));
user.Address = String.valueOf(item.get("address"));
user.ImageId = Integer.parseInt(String.valueOf(item.get("imageid")));
intent.putExtra("user", user);
if(searchLinearout != null && searchLinearout.getVisibility()==View.VISIBLE) {
searchLinearout.setVisibility(View.GONE);
}
/*将arg2作为请求码传过去 用于标识修改项的位置*/
startActivityForResult(intent, arg2);
}
});
//删除多项标记
lv.setCacheColorHint(Color.TRANSPARENT); //设置ListView的背景为透明
lv.setOnItemLongClickListener(new OnItemLongClickListener(){
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if(deleteId == null) {
deleteId = new ArrayList<Integer>();
}
HashMap item = (HashMap)arg0.getItemAtPosition(arg2);
Integer id = Integer.parseInt(String.valueOf(item.get("id")));
RelativeLayout r = (RelativeLayout)arg1;
ImageView markedView = (ImageView)r.getChildAt(2);
if(markedView.getVisibility() == View.VISIBLE) {
markedView.setVisibility(View.GONE);
deleteId.remove(id);
} else {
markedView.setVisibility(View.VISIBLE);
deleteId.add(id);
}
Log.d("delete", String.valueOf(id));
Log.d("delete", String.valueOf(deleteId.size()));
return true;
}
});
loadsearch();
onlineserach = (Button) findViewById(R.id.btn_onlinesearch);
onlineserach.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
et_search = (EditText) findViewById(R.id.et_search);
final String online_name = et_search.getText().toString();
final String online_phone = userlist.readInfoInServer();
new Thread(new Runnable(){
public void run(){
testjava onlinesearch = new testjava();
result = onlinesearch.query(online_phone, online_name);
len = result.length;
}
}).start();
list = new ArrayList<HashMap<String,String>>();
int k=0;
while(k<len){
ContactInfo infoInsert = new ContactInfo(result[k].name, "", result[k].tel, "", "", "",R.drawable.image15);
// userlist.insertContacts(infoInsert);
HashMap<String,String> item = new HashMap();
item.put("name", result[k].name);
item.put("phone", result[k].tel);
item.put("imageid", ""+R.drawable.image15);
list.add(item);
k++;
}
lv.setAdapter(null);
SimpleAdapter onlinesearchadapter = new SimpleAdapter(
MainActivity.this,
list,
R.layout.listitem,
new String[]{"imageid","name","phone"},
new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
lv.setAdapter(onlinesearchadapter); //将整合好的adapter交给listview,显示给用户看
tv_title.setText( "共查到 " + len+" 条记录");
}
});
}
private void loadUserList(){
Log.d(TAG,"loadUserList");
//userlist = new Contacts(MainActivity.this);
ArrayList list = new ArrayList<HashMap>();
ContactInfo[] userinfo = userlist.readContacts();
if(userinfo != null ){//首次启动时,需要判断数据库是否为空
for(ContactInfo info : userinfo){
Log.d(TAG, info.toString());
}
//将ContactInfo[]转换成 list格式;
int length = userinfo.length;
int k=0;
while(k<length) {
HashMap item = new HashMap();
item.put("name", userinfo[k].Name);
item.put("nickname", userinfo[k].SubName);
item.put("phone", userinfo[k].MobileTel);
item.put("telephone", userinfo[k].FixedTel);
item.put("company", userinfo[k].Company);
item.put("address", userinfo[k].Address);
item.put("imageid", userinfo[k].ImageId);
item.put("id", userinfo[k].ContactID);
list.add(item);
k++;
}
if(length == 0){
setTitle("没有查到任何数据");
}else{
adapter = new SimpleAdapter(this,
list,
R.layout.listitem,
new String[]{"imageid","name","phone"},
new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
lv.setAdapter(adapter);
}
}
}
public boolean onKeyDown(int keyCode, KeyEvent event){
Log.d(TAG,"onKeyDown, keyCode = " + keyCode);
if(keyCode == KeyEvent.KEYCODE_MENU){
if(gv_menu == null){
loadMenu();
}
if(gv_menu.getVisibility() == View.GONE){
gv_menu.setVisibility(View.VISIBLE);
}else{
gv_menu.setVisibility(View.GONE);
searchLinearout.setVisibility(View.GONE);
}
}
if (keyCode == KeyEvent.KEYCODE_BACK) {
ExitDialog.exitDialog(MainActivity.this);
}
return super.onKeyDown(keyCode, event);
}
private void loadMenu(){
gv_menu= (GridView) this.findViewById(R.id.gd_menu);
gv_menu.setBackgroundResource(R.drawable.channelgallery_bg);
gv_menu.setNumColumns(5);
gv_menu.setGravity(Gravity.BOTTOM);
// gv_menu.setVerticalSpacing(10);
gv_menu.setHorizontalSpacing(10);
ArrayList data = new ArrayList();
HashMap map = new HashMap();
map.put("itemImage", R.drawable.menu_new_user);
map.put("itemText", "添加");
data.add(map);
map = new HashMap();
map.put("itemImage", R.drawable.menu_search);
map.put("itemText", "查找");
data.add(map);
map = new HashMap();
map.put("itemImage", R.drawable.menu_update);
map.put("itemText", "同步");
data.add(map);
map = new HashMap();
map.put("itemImage", R.drawable.menu_delete);
map.put("itemText", "删除");
data.add(map);
map = new HashMap();
map.put("itemImage", R.drawable.menu_more);
map.put("itemText", "更多");
data.add(map);
SimpleAdapter menuadapter = new SimpleAdapter(this, data, R.layout.item_menu,
new String[]{"itemImage","itemText"}, new int[]{R.id.item_image,R.id.item_text});
gv_menu.setAdapter(menuadapter);
gv_menu.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//HashMap map = (HashMap) parent.getItemAtPosition(1);
switch(position) {
//添加
case 0:{
Intent intent = new Intent(MainActivity.this, AddActivity.class);
startActivity(intent);
break;
}
//查找
case 1:{
//设置搜索框是否可见;
if (searchLinearout == null){
searchLinearout = (LinearLayout) findViewById(R.id.ll_search);
}
if( ifsearch == 0){
searchLinearout.setVisibility(view.VISIBLE);
ifsearch = 1;
}else
{
searchLinearout.setVisibility(view.GONE);
ifsearch = 0;
}
loadsearch();
break;
}
//同步
case 2:{
loadupdate();
Log.d("TEST2", "here");
break;
}
//删除
case 3:{
if(searchLinearout != null && searchLinearout.getVisibility()==View.VISIBLE) {
searchLinearout.setVisibility(View.GONE);
}
if(deleteId == null || deleteId.size() == 0) {
Toast.makeText(MainActivity.this, " 没有标记任何记录\n长按一条记录即可标记", Toast.LENGTH_LONG).show();
} else {
new AlertDialog.Builder(MainActivity.this)
.setTitle("确定要删除标记的"+deleteId.size()+"条记录吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Contacts userlist = new Contacts(MainActivity.this);
int deletID[] = new int[deleteId.size()];
for(int k=0;k<deleteId.size();k++){
deletID[k]=deleteId.get(k);
//userlist.deleteContacts( deleteId.get(k));
}
userlist.batDeleteContacts(deletID);
ArrayList list = new ArrayList<HashMap>();
ContactInfo[] userinfo = userlist.readContacts();
if(userinfo == null ){//为空时清除LISTVIEW
lv.setAdapter(null);
}else{
//将ContactInfo[]转换成 list格式;
int length = userinfo.length;
int k=0;
while(k<length) {
HashMap item = new HashMap();
item.put("name", userinfo[k].Name);
item.put("nickname", userinfo[k].SubName);
item.put("phone", userinfo[k].MobileTel);
item.put("telephone", userinfo[k].FixedTel);
item.put("company", userinfo[k].Company);
item.put("address", userinfo[k].Address);
item.put("imageid", userinfo[k].ImageId);
item.put("id", userinfo[k].ContactID);
list.add(item);
k++;
}
if(length == 0){
setTitle("没有查到任何数据");
}else{
adapter = new SimpleAdapter(MainActivity.this,
list,
R.layout.listitem,
new String[]{"imageid","name","phone"},
new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
lv.setAdapter(adapter);
}
deleteId.clear();
}
}
})
.setNegativeButton("取消", null)
.create()
.show() ;
}
break;
}
//更多
case 4:{
if(searchLinearout != null && searchLinearout.getVisibility()==View.VISIBLE) {
searchLinearout.setVisibility(View.GONE);
}
loadMainMenuDialog();
mainMenuDialog.show();
break;
}
}
}
});
}
private void loadsearch() {
searchLinearout = (LinearLayout) findViewById(R.id.ll_search);
et_search = (EditText)findViewById(R.id.et_search);
condition = et_search.getText().toString();
//在线查找功能
//本地查找功能
et_search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
String condition = et_search.getText().toString();
if(condition.equals("")) {
lv.setAdapter(adapter);
}
userlist = new Contacts(MainActivity.this);
ContactInfo[] searchuser = userlist.queryContacts(condition);
if(searchuser!=null){
lv.setAdapter(null);
//将ContactInfo[]转换成 list格式;
int length = searchuser.length;
Log.d(TAG,"length1 = " + searchuser.length);
int k=0;
list = new ArrayList<HashMap<String,String>>();
while(k<length) {
HashMap<String,String> item = new HashMap();
item.put("name", searchuser[k].Name);
item.put("nickname", searchuser[k].SubName);
item.put("phone", searchuser[k].MobileTel);
item.put("telephone", searchuser[k].FixedTel);
item.put("company", searchuser[k].Company);
item.put("address", searchuser[k].Address);
item.put("imageid", ""+searchuser[k].ImageId);
item.put("id", ""+searchuser[k].ContactID);
list.add(item);
k++;
}
SimpleAdapter searchadapter = new SimpleAdapter(
MainActivity.this,
list,
R.layout.listitem,
new String[]{"imageid","name","phone"},
new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
lv.setAdapter(searchadapter); //将整合好的adapter交给listview,显示给用户看
//tv_title.setText( "共查到 " + searchuser.length+" 条记录");
//setTitle( "共查到 " + searchuser.length+" 条记录");
}else{
lv.setAdapter(null);
// tv_title.setText("没有查到任何数据");
}
// if(searchuser != null){
// lv.setAdapter(null);
//
// //将ContactInfo[]转换成 list格式;
// int length = searchuser.length;
// int k=0;
// Log.d(TAG,"length = " + searchuser.length);
//
// while(k<length) {
// HashMap item = new HashMap();
// item.put("name", searchuser[k].Name);
// item.put("nickname", searchuser[k].SubName);
// item.put("phone", searchuser[k].MobileTel);
// item.put("telephone", searchuser[k].FixedTel);
// item.put("company", searchuser[k].Company);
// item.put("address", searchuser[k].Address);
// item.put("imageid", searchuser[k].ImageId);
// item.put("id", searchuser[k].ContactID);
// if(list==null){
// list = new ArrayList<HashMap<String,String>>();
// }
// list.add(item);
// k++;
// }
//
// searchadapter = new SimpleAdapter(
// MainActivity.this,
// list,
// R.layout.listitem,
// new String[]{"imageid","name","phone"},
// new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
// lv.setAdapter(searchadapter); //将整合好的adapter交给listview,显示给用户看
//
//
//
//
//
// }
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
}
private Handler handler = new Handler(){
public void handleMessage(Message msg) {
//关闭ProgressDialog
progressDialog.dismiss();
//更新UI
loadUserList();
Toast toast=Toast.makeText(MainActivity.this,"更新成功", Toast.LENGTH_LONG);
toast.show();
//statusTextView.setText("Completed!");
}
};
private void loadMainMenuDialog() {
if(mainMenuDialog == null) {
LayoutInflater li = LayoutInflater.from(this);
mainMenuView = li.inflate(R.layout.main_menu_grid, null);
//根据主菜单视图,创建主菜单对话框
mainMenuDialog = new AlertDialog.Builder(this).setView(mainMenuView).create();
//根据主菜单视图,拿到视图文件中的GridView,然后再往里面放Adapter
gv_more = (GridView)mainMenuView.findViewById(R.id.gridview);
gv_more.setHorizontalSpacing(10);
//创建Adapter
String[] main_menu_itemName = { "显示所有", "导入联系人", "关于", "删除所有", "更新", "后退"};
int[] main_menu_itemSource = {
R.drawable.showall,
R.drawable.menu_backup,
R.drawable.menu_quit,
R.drawable.menu_delete,
R.drawable.menu_fresh,
R.drawable.menu_return};
SimpleAdapter menuAdapter = getMenuAdapter(main_menu_itemName, main_menu_itemSource);
gv_more.setAdapter(menuAdapter);
//响应点击事件
gv_more.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
switch(arg2){
//显示所有
case 0:{
loadUserList();
setTitle("SharingContact");
mainMenuDialog.dismiss();
break;
}
//导入手机联系人
case 1:{
progressDialog=ProgressDialog
.show(MainActivity.this,
"请等待...",
"正在导入手机联系人,请稍后...",true);
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
getPhoneContacts(); //将手机上的联系人导入列表
handler.sendEmptyMessage(0);
}
}.start();
mainMenuDialog.dismiss();
break;
}
//关于;
case 2:{
Intent intent = new Intent(MainActivity.this, AboutActivity.class);
startActivity(intent);
mainMenuDialog.dismiss();
break;
}
//全部删除
case 3:{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
confirmDialog = builder.create();
builder.setTitle("是否删除所有!?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ContactInfo[] alluser = userlist.readContacts();
if(alluser != null ){//首次启动时,需要判断数据库是否为空
userlist.clearContacts();
}
lv.setAdapter(null);
mainMenuDialog.dismiss();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
confirmDialog.dismiss();
}
});
builder.create().show();
break;
}
//更新
case 4:{
loadrenew();
mainMenuDialog.dismiss();
break;
}
//后退
case 5:{
mainMenuDialog.dismiss();
break;
}
}
}});
}
}
private void getPhoneContacts() {
ContentResolver cr = getContentResolver();
//取得电话本中开始一项的光标
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
// 取得联系人名字
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String name = cursor.getString(nameFieldColumnIndex);
// string += (name);
// 取得联系人ID
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
+ contactId, null, null);
int len = phone.getCount();
mycontact = new ContactInfo[len];
// 取得电话号码(可能存在多个号码)
int k=0;
while (phone.moveToNext())
{
String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// 创建一个联系人信息
// ContactInfo infoInsert = new ContactInfo(name, "",strPhoneNumber, "", "","",R.drawable.image15);
// 保存一个联系人信息
mycontact[k] = new ContactInfo(name, "",strPhoneNumber, "", "","",R.drawable.image15);
// c.insertContacts(infoInsert);
k++;
}
// string += "\n";
phone.close();
}
cursor.close();
Contacts c = new Contacts(MainActivity.this);
c.readLocalContacts(mycontact);
}
protected void loadrenew() {
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
final LayoutInflater factory =LayoutInflater.from(this);
final View view = factory.inflate(R.layout.renew, null);
builder.setView(view);
builder.setTitle("更新通讯录");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
EditText et_renew_phone = (EditText) view.findViewById(R.id.et_renew_phone);
EditText et_renew_password = (EditText) view.findViewById(R.id.et_renew_password);
final String renew_phone = et_renew_phone.getText().toString();
final String renew_password = et_renew_password.getText().toString();
//判断密码格式是否正确
if(renew_password.length()>=4 && renew_password.length()<=8){
//测试
new Thread(new Runnable(){
public void run(){
testjava test = new testjava();
//String returninfo = "null";
String returninfo = test.register(renew_phone,renew_password,3);
Log.d("TEST", returninfo);
// Toast toast=Toast.makeText(MainActivity.this,"tttt", Toast.LENGTH_LONG);
// toast.show();
if(returninfo.equals("Logon OK")){
/*
return:
* "Logon OK" for logon success.
* "Password incorrect" for password incorrect.
* "No account" for account not exist when logging.
* "Register success" for new account register success.
*/
getcontact = test.getContact(renew_phone);
}else if(returninfo.equals("Password incorrect")){
Toast toast1=Toast.makeText(MainActivity.this,"密码不正确!", Toast.LENGTH_LONG);
toast1.show();
}else if(returninfo.equals("No account")){
Toast toast1=Toast.makeText(MainActivity.this,"账号不存在!", Toast.LENGTH_LONG);
toast1.show();
}
}
}).start();
if(getcontact == null ){
Toast toast=Toast.makeText(MainActivity.this,"无法获取数据,请重试!", Toast.LENGTH_LONG);
toast.show();
}
if(getcontact != null ){
ArrayList list = new ArrayList<HashMap>();
int length = getcontact.length;
ContactInfo[] getcontactinfo = new ContactInfo[length];
int k=0;
while(k<length) {
HashMap item = new HashMap();
item.put("name", getcontact[k].name);
item.put("nickname", getcontact[k].nickName);
item.put("phone", getcontact[k].tel);
item.put("telephone", getcontact[k].fixedTel);
item.put("company", getcontact[k].company);
item.put("address", getcontact[k].address);
item.put("imageid", R.drawable.image15);
item.put("id", getcontact[k].contactId);
list.add(item);
//将contact转化成contactinfo格式;
getcontactinfo[k] = new ContactInfo();
getcontactinfo[k].Name = getcontact[k].name;
getcontactinfo[k].SubName = getcontact[k].nickName;
getcontactinfo[k].MobileTel = getcontact[k].tel;
getcontactinfo[k].FixedTel = getcontact[k].fixedTel;
getcontactinfo[k].Company = getcontact[k].company;
getcontactinfo[k].Address = getcontact[k].address;
getcontactinfo[k].ContactID = getcontact[k].contactId;
getcontactinfo[k].ImageId = R.drawable.image15;
k++;
}
if(length == 0){
setTitle("没有查到任何数据");
}else{
userlist.importContacts(getcontactinfo);
adapter = new SimpleAdapter(MainActivity.this,
list,
R.layout.listitem,
new String[]{"imageid","name","phone"},
new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});
lv.setAdapter(adapter);
Toast toast=Toast.makeText(MainActivity.this,"已从服务器更新成功", Toast.LENGTH_LONG);
toast.show();
}
}
progressDialog=ProgressDialog.show(MainActivity.this, "请等待...", "正在更新联系人...",true);
handler3.sendEmptyMessage(0);
//写入本地用户数据库
userlist.writeInfoInServer(renew_phone);
}else{
Toast toast=Toast.makeText(MainActivity.this,"密码:"+renew_password+",长度有误,更新不成功", Toast.LENGTH_LONG);
toast.show();
}
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
});
builder.create().show();
}
private Handler handler2 = new Handler(){
public void handleMessage(Message msg) {
//关闭ProgressDialog
progressDialog.dismiss();
Toast toast=Toast.makeText(MainActivity.this,"已同步服务器", Toast.LENGTH_LONG);
toast.show();
}
};
private Handler handler3 = new Handler(){
public void handleMessage(Message msg) {
//关闭ProgressDialog
progressDialog.dismiss();
}
};
private void loadupdate() {
LayoutInflater li = LayoutInflater.from(this);
final View textEntryView = li.inflate(R.layout.main_menu_update, null);
final LinearLayout updatelayout = (LinearLayout) getLayoutInflater().inflate(R.layout.main_menu_update, null);
builder = new AlertDialog.Builder(this);
builder.setTitle("同步通讯录");
builder.setView(textEntryView).create();
builder.setPositiveButton("同步", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//同步操作
// shock = (CheckBox)musicDilog.findViewById(R.id.shock);
et_phone = (EditText) textEntryView.findViewById(R.id.myname);
et_password = (EditText) textEntryView.findViewById(R.id.password);
cb_share = (CheckBox) textEntryView.findViewById(R.id.cb_find);
phone = et_phone.getText().toString();
password = et_password.getText().toString();
final int error=0;
Log.d(TAG, phone);
if(cb_share.isChecked()){
share=2;
}else{
share=1;
}
share = 1;
if(phone=="" ){
Toast toast=Toast.makeText(getApplicationContext(), "请先输入您的手机号码", Toast.LENGTH_SHORT);
toast.show();
}else if(password.length()<4 && password.length()>8 ){
Toast toast=Toast.makeText(getApplicationContext(), "密码长度不正确", Toast.LENGTH_SHORT);
toast.show();
}
else{
new Thread(new Runnable(){
public void run(){
userlist=new Contacts(MainActivity.this);
ContactInfo[][] userinfo=userlist.syncContactsPre();
testjava test=new testjava();
test.register(phone,password,share);
contact[] infosInsert=null;
contact[] infosUpdate=null;
if(userinfo[0]!=null){
int k=0;
int length1=userinfo[0].length;
infosInsert=new contact[length1];
while(k<length1){
infosInsert[k]=new contact();
infosInsert[k].name=userinfo[0][k].Name;
infosInsert[k].tel=userinfo[0][k].MobileTel;
infosInsert[k].contactId=userinfo[0][k].ContactID;
infosInsert[k].nickName = userinfo[0][k].SubName;
infosInsert[k].fixedTel = userinfo[0][k].FixedTel;
infosInsert[k].company = userinfo[0][k].Company;
infosInsert[k].address = userinfo[0][k].Address;
k++;
}
Log.d("test", test.sync(phone,infosInsert));
}
if(userinfo[1]!=null){
int k=0;
int length1=userinfo[1].length;
infosUpdate=new contact[length1];
while(k<length1){
infosUpdate[k]=new contact();
infosUpdate[k].name=userinfo[0][k].Name;
infosUpdate[k].tel=userinfo[0][k].MobileTel;
infosUpdate[k].contactId=userinfo[0][k].ContactID;
infosUpdate[k].nickName = userinfo[0][k].SubName;
infosUpdate[k].fixedTel = userinfo[0][k].FixedTel;
infosUpdate[k].company = userinfo[0][k].Company;
infosUpdate[k].address = userinfo[0][k].Address;
k++;
}
Log.d("test", test.sync(phone,infosInsert));
}
if(userinfo[2]!=null){
int k=0;
int length1=userinfo[2].length;
while(k<length1){
Log.d("test", test.deleteContact(phone,userinfo[2][k].ContactID));
k++;
}
}
userlist.syncContactsPost();
}
}).start();
}
progressDialog=ProgressDialog
.show(MainActivity.this,
"请等待...",
"正在同步服务器,请稍后...",true);
userlist.writeInfoInServer(phone);
handler2.sendEmptyMessage(0);
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
});
builder.show();
}
private SimpleAdapter getMenuAdapter(String[] menuNameArray,
int[] imageResourceArray) {
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < menuNameArray.length; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("itemImage", imageResourceArray[i]);
map.put("itemText", menuNameArray[i]);
data.add(map);
}
SimpleAdapter simperAdapter =
new SimpleAdapter(
this,
data,
R.layout.item_menu,
new String[] { "itemImage", "itemText" },
new int[] { R.id.item_image, R.id.item_text });
return simperAdapter;
}
}
package com.example.sharingcontact;
import java.util.ArrayList;
import com.example.sharingcontact.AddActivity.ImageAdapter;
import com.example.sharingcontact.UpdateActivity.contact;
import com.example.sharingcontact.db.ContactInfo;
import com.example.sharingcontact.db.Contacts;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ViewSwitcher.ViewFactory;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ImageView.ScaleType;
import android.widget.ViewSwitcher.ViewFactory;
public class ModifyActivity extends Activity implements ViewFactory{
EditText et_name;
EditText et_telePhone;
EditText et_phone;
EditText et_nickname;
EditText et_company;
EditText et_address;
int id;
Button btn_save;
Button btn_return;
Button btn_delete;
TextView tv_title;
Button btn_message;
Button btn_dial;
ContactInfo user;
//头像的按钮
ImageButton imageButton;
//用flag来判断按钮的状态 false表示查看点击修改状态 true表示点击修改保存状态
boolean flag = false;
boolean imageChanged = false;
boolean isDataChanged = false;
int currentImagePosition;
int previousImagePosition;
String[] callData;
//表示状态:打电话,发短信,发邮件
String status;
//拥有一个user实例,这个对象由Intent传过来
Gallery gallery;
ImageSwitcher is;
View numChooseView;
View imageChooseView;
//号码选择的对话框
AlertDialog numChooseDialog;
AlertDialog imageChooseDialog =null;
/**
* 所有的图像图片
*/
private int[] images
= new int[]{R.drawable.icon
,R.drawable.image1,R.drawable.image2,R.drawable.image3
,R.drawable.image4,R.drawable.image5,R.drawable.image6
,R.drawable.image7,R.drawable.image8,R.drawable.image9
,R.drawable.image10,R.drawable.image11,R.drawable.image12
,R.drawable.image13,R.drawable.image14,R.drawable.image15
,R.drawable.image16,R.drawable.image17,R.drawable.image18
,R.drawable.image19,R.drawable.image20,R.drawable.image21
,R.drawable.image22,R.drawable.image23,R.drawable.image24
,R.drawable.image25,R.drawable.image26,R.drawable.image27
,R.drawable.image28,R.drawable.image29,R.drawable.image30};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在标题上添加按钮
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.modify);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titleitem);
//默认不弹出软键盘
getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
final TextView tv_title = (TextView) findViewById(R.id.tv_title);
tv_title.setText("联系人列表");
//获得意图
Intent intent = getIntent();
//从意图中得到需要的user对象
user = (ContactInfo) intent.getSerializableExtra("user");
loadUserData();
setEditTextDisable();
//为按钮添加监听类
btn_delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
deleteat();
}
});
btn_save.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
if(!flag) {
btn_save.setText("保存");
setEditTextAble();
setColorToBlack();
flag = true;
tv_title.setText("修改联系人");
} else {
//往数据库里面更新数据
modify();
finish();
setEditTextDisable();
setColorToGray();
btn_save.setText("修改");
tv_title.setText("联系人详情");
flag = false;
}
}});
btn_return.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
finish();
}
});
//返回键
imageButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
loadImage();//为gallery装载图片
initImageChooseDialog();//初始化imageChooseDialog
imageChooseDialog.show();
}
});
btn_message.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
status = Intent.ACTION_SENDTO;
if(callData == null) {
loadAvailableCallData();
}
if(callData.length == 0) {
//提示没有可用的号码
Toast.makeText(ModifyActivity.this, "没有可用的号码!", Toast.LENGTH_LONG).show();
} else if(callData.length == 1) {
//如果之后又一个可用的号码,这直接使用这个号码拨出
Intent intent =
new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto://" + callData[0]));
startActivity(intent);
} else {
initNumChooseDialog();
}
}
});
btn_dial.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
//将状态设置为打电话
status = Intent.ACTION_CALL;
if(callData == null) {
//加载可用的号码
loadAvailableCallData();
}
if(callData.length == 0) {
//提示没有可用的号码
Toast.makeText(ModifyActivity.this, "没有可用的号码!", Toast.LENGTH_LONG).show();
} else if(callData.length == 1) {
//如果之有一个可用的号码,这直接使用这个号码拨出
Intent intent =
new Intent(Intent.ACTION_CALL,Uri.parse("tel://" + callData[0]));
startActivity(intent);
} else {
//如果有2个或者2个以上号码,弹出号码选择对话框
initNumChooseDialog();
}
}
});
}
//短信或者电话功能
public void loadAvailableCallData() {
ArrayList<String> callNums = new ArrayList<String>();
if(!user.MobileTel.equals("")) {
callNums.add(user.MobileTel);
}
if(!user.FixedTel.equals("")) {
callNums.add(user.FixedTel);
}
callData = new String[callNums.size()];
for(int i=0;i<callNums.size();i++) {
callData[i] = callNums.get(i);
}
}
public void initNumChooseDialog() {
if(numChooseDialog == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = LayoutInflater.from(this);
numChooseView = inflater.inflate(R.layout.numchoose, null);
ListView lv = (ListView)numChooseView.findViewById(R.id.num_list);
ArrayAdapter array =
new ArrayAdapter(this,android.R.layout.simple_list_item_1,callData);
lv.setAdapter(array);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
String num = String.valueOf(arg0.getItemAtPosition(arg2));
Intent intent = null;
if(status.equals(Intent.ACTION_CALL)) {
intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel://" + num));
} else {
intent = new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto://" + num));
}
startActivity(intent);
//对话框消失
numChooseDialog.dismiss();
}});
builder.setView(numChooseView);
numChooseDialog = builder.create();
}
numChooseDialog.show();
}
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(flag) {
Dialog dialog = new AlertDialog.Builder(ModifyActivity.this) // 实例化对象
//.setIcon(R.drawable.pic_m) // 设置显示图片
.setMessage("是否保存联系人?") // 设置显示内容
.setPositiveButton("确定", // 增加一个确定按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
modify();
flag=false;
finish();
}
}).setNegativeButton("取消", // 增加取消按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
finish();
}
}).create(); // 创建Dialog
dialog.show();
// 显示对话框
}
}
return super.onKeyDown(keyCode, event);
}
public void loadImage() {
if(imageChooseView == null) {
LayoutInflater li = LayoutInflater.from(ModifyActivity.this);
imageChooseView = li.inflate(R.layout.imageswitch, null);
gallery = (Gallery)imageChooseView.findViewById(R.id.img_gallery);
// gallery.setAdapter(adapter);
gallery.setAdapter(new ImageAdapter(ModifyActivity.this));
gallery.setSelection(images.length/2);
is = (ImageSwitcher)imageChooseView.findViewById(R.id.image_switcher);
is.setFactory(this);
gallery.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
currentImagePosition = arg2 % images.length;
is.setImageResource(images[arg2 % images.length]);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}});
}
}
/**
* 自定义Gallery的适配器
*/
class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
/**
* gallery从这个方法中拿到image
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(context);
iv.setImageResource(images[position%images.length]);
iv.setAdjustViewBounds(true);
iv.setLayoutParams(new Gallery.LayoutParams(80,80));
iv.setPadding(15, 10, 15, 10);
return iv;
}
}
@Override
public View makeView() {
ImageView view = new ImageView(this);
view.setBackgroundColor(0xff000000);
view.setScaleType(ScaleType.FIT_CENTER);
view.setLayoutParams(new ImageSwitcher.LayoutParams(90,90));
return view;
}
public void initImageChooseDialog() {
if(imageChooseDialog == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("请选择图像")
.setView(imageChooseView).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
imageChanged = true;
previousImagePosition = currentImagePosition;
imageButton.setImageResource(images[currentImagePosition%images.length]);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
currentImagePosition = previousImagePosition;
}
});
imageChooseDialog = builder.create();
}
}
/**
* 获得布局文件中的控件,并且根据传递过来user对象对控件进行赋值
*/
public void loadUserData() {
// 获得EditText控件
et_name = (EditText)findViewById(R.id.name);
et_nickname = (EditText) findViewById(R.id.nickname);
et_phone = (EditText)findViewById(R.id.phone);
et_telePhone = (EditText)findViewById(R.id.telephone);
et_company = (EditText)findViewById(R.id.company);
et_address = (EditText)findViewById(R.id.address);
// 获得Button控件
btn_delete = (Button) findViewById(R.id.delete);
btn_save = (Button) findViewById(R.id.btn_titlesave);
btn_return = (Button)findViewById(R.id.btn_titlecancle);
tv_title = (TextView) findViewById(R.id.tv_title);
imageButton = (ImageButton)findViewById(R.id.image_button);
btn_message = (Button) findViewById(R.id.message);
btn_dial = (Button) findViewById(R.id.dial);
// editText.setFocusableInTouchMode(true);
// editText.requestFocus();
// 为控件赋值
btn_save.setText("修改");
tv_title.setText("联系人详情");
et_name.setText(user.Name);
et_nickname.setText(user.SubName);
et_phone.setText(user.MobileTel);
et_telePhone.setText(user.FixedTel);
et_company.setText(user.Company);
et_address.setText(user.Address);
imageButton.setImageResource(user.ImageId);
}
/**
* 设置EditText为不可用
*/
private void setEditTextDisable() {
et_name.setEnabled(false);
et_nickname.setEnabled(false);
et_phone.setEnabled(false);
et_telePhone.setEnabled(false);
et_company.setEnabled(false);
et_address.setEnabled(false);
imageButton.setEnabled(false);
setColorToGray();
}
/**
* 设置EditText为可用状态
*/
private void setEditTextAble() {
et_name.setEnabled(true);
et_nickname.setEnabled(true);
et_phone.setEnabled(true);
et_telePhone.setEnabled(true);
et_company.setEnabled(true);
et_address.setEnabled(true);
imageButton.setEnabled(true);
//setColorToBlack();
}
/**
* 设置显示的字体颜色为黑色
*/
private void setColorToBlack() {
et_name.setTextColor(Color.BLACK);
et_nickname.setTextColor(Color.BLACK);
et_phone.setTextColor(Color.BLACK);
et_telePhone.setTextColor(Color.BLACK);
et_company.setTextColor(Color.BLACK);
et_address.setTextColor(Color.BLACK);
}
/**
* 设置显示的字体颜色为白色
*/
private void setColorToGray() {
et_name.setTextColor(Color.GRAY);
et_nickname.setTextColor(Color.GRAY);
et_phone.setTextColor(Color.GRAY);
et_telePhone.setTextColor(Color.GRAY);
et_company.setTextColor(Color.GRAY);
et_address.setTextColor(Color.GRAY);
}
/**
* 获得最新数据,创建Contactinfo对象,更新数据库
*/
private void modify() {
Log.d("先前", user.MobileTel);
user.Name = et_name.getText().toString();
user.SubName = et_nickname.getText().toString();
user.MobileTel = et_phone.getText().toString();
user.FixedTel = et_telePhone.getText().toString();
user.Company = et_company.getText().toString();
user.Address = et_address.getText().toString();
if(imageChanged) {
user.ImageId = images[currentImagePosition%images.length];
}
Contacts c = new Contacts(ModifyActivity.this);
c.updateContacts(user);
Log.d("后来", user.MobileTel);
}
public void deleteat(){
int id = user.ContactID;
Contacts c = new Contacts(ModifyActivity.this);
c.deleteContacts(id);
finish();
Toast toast=Toast.makeText(getApplicationContext(), user.Name+" 已删除", Toast.LENGTH_SHORT);
toast.show();
}
}
package com.example.sharingcontact;
import java.io.*;
import java.net.Socket;
public class testjava {
/**
* @param args
* @throws EOFException
*/
public static void main(String[] args) {
// TODO Auto-generated method
//temp[] test=query("123","user05");
//System.out.println(test[0].tel);
/*
contact[] test=new contact[10];
for(int i=0;i<10;i++){
test[i]=new contact();
test[i].name="user"+i;
test[i].nickName=null;
test[i].tel="147258369";
test[i].fixedTel=null;
test[i].company=null;
test[i].address=null;
test[i].contactId=i;
}
sync("1345021",test);
*/
System.out.println(register("1345021","123456",3));
}
//share 1 for private,2 for public,3 for "just logon"
//tel for telephone number
/*
* return:
* "Logon OK" for logon success.
* "Password incorrect" for password incorrect.
* "No account" for account not exist when logging.
* "Register success" for new account register success.
*/
public static String register(String tel,String pw,int share){
String getMsg;
try{
Socket socket=new Socket("109.131.14.239",10086);
OutputStream os=socket.getOutputStream();
PrintWriter sos=new PrintWriter(os);
DataOutputStream dos=new DataOutputStream(os);
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
dos.writeInt(1);
dos.flush();
sos.println(tel);
sos.println(pw);
sos.flush();
dos.writeInt(share);
dos.flush();
getMsg=is.readLine();
os.close();sos.close();dos.close();is.close();socket.close();
}catch(Exception e){
getMsg="Connection ERROR";
}
return getMsg;
}
//insert or update contact
//utel for user's telephone number
//contact for sync
public static String sync(String utel,contact[] contact){
String getMsg;
if(contact==null)
return null;
int count=contact.length;
try{
Socket socket=new Socket("109.131.14.239",10086);
OutputStream os=socket.getOutputStream();
PrintWriter sos=new PrintWriter(os);
DataOutputStream dos=new DataOutputStream(os);
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//set the symbol and length
dos.writeInt(2);
dos.flush();
dos.writeInt(count);
dos.flush();
//transmission
sos.println(utel);
sos.flush();
for(int i=0;i<count;i++){
sos.println(contact[i].name);
sos.println(contact[i].nickName);
sos.println(contact[i].tel);
sos.println(contact[i].fixedTel);
sos.println(contact[i].company);
sos.println(contact[i].address);
sos.flush();
dos.writeInt(contact[i].contactId);
dos.flush();
}
getMsg=is.readLine();
os.close();sos.close();dos.close();is.close();socket.close();
}catch(Exception e){
getMsg="Connection ERROR";
}
return getMsg;
}
//delete contact
//utel for user's tel,contactId for contactid
public static String deleteContact(String utel,int contactId){
String getMsg;
try{
Socket socket=new Socket("109.131.14.239",10086);
OutputStream os=socket.getOutputStream();
PrintWriter sos=new PrintWriter(os);
DataOutputStream dos=new DataOutputStream(os);
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
dos.writeInt(3);
dos.flush();
sos.println(utel);
sos.flush();
dos.writeInt(contactId);
getMsg=is.readLine();
os.close();sos.close();dos.close();is.close();socket.close();
}catch(Exception e){
getMsg="Connection ERROR";
}
return getMsg;
}
//utel for user's telephone number
public static contact[] getContact(String utel){
int count;
contact[] getArray=null;
try{
Socket socket=new Socket("109.131.14.239",10086);
OutputStream os=socket.getOutputStream();
InputStream is=socket.getInputStream();
PrintWriter sos=new PrintWriter(os);
DataOutputStream dos=new DataOutputStream(os);
DataInputStream dis=new DataInputStream(is);
dos.writeInt(4);
dos.flush();
sos.println(utel);
sos.flush();
count=dis.readInt();
getArray=new contact[count];
for(int i=0;i<count;i++){
getArray[i]=new contact();
getArray[i].name=dis.readLine();
getArray[i].nickName=dis.readLine();
getArray[i].tel=dis.readLine();
getArray[i].fixedTel=dis.readLine();
getArray[i].company=dis.readLine();
getArray[i].address=dis.readLine();
getArray[i].contactId=dis.readInt();
}
os.close();is.close();sos.close();dos.close();dis.close();socket.close();
}catch(Exception e){
System.out.println("ERROR "+e);
}
return getArray;
}
//search online
//utel for user's telephone number
//name for the user's name being searched
public static temp[] query(String utel,String sname){
int count;
temp[] result=null;
try{
Socket socket=new Socket("109.131.14.239",10086);
OutputStream os=socket.getOutputStream();
InputStream is=socket.getInputStream();
PrintWriter sos=new PrintWriter(os);
DataOutputStream dos=new DataOutputStream(os);
DataInputStream dis=new DataInputStream(is);
dos.writeInt(5);
dos.flush();
sos.println(utel);
sos.println(sname);
sos.flush();
count=dis.readInt();
result=new temp[count];
//receive the result
for(int i=0;i<count;i++){
result[i]=new temp();
result[i].name=dis.readLine();
result[i].tel=dis.readLine();
result[i].count=dis.readInt();
}
dis.close();dos.close();sos.close();is.close();os.close();socket.close();
}catch(Exception e){
System.out.println("Connection ERROR"+e);
}
return result;
}
}
class contact{
public String name;
public String nickName;
public String tel;
public String fixedTel;
public String company;
public String address;
public int contactId;
}
class temp{
//public String utel;
public String name;
public String tel;
public int count;
}
package com.example.sharingcontact;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import com.example.sharingcontact.db.ContactInfo;
import com.example.sharingcontact.db.Contacts;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
public class UpdateActivity extends Activity {
Button btn_update_cancell;
Button btn_update;
EditText et_name;
EditText et_phone;
String name;
String phone;
Contacts userlist;
CheckBox ck_find;
int share;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.update);
setTitle("SharingContact");
btn_update_cancell = (Button) findViewById(R.id.btn_update_cancell);
btn_update =(Button) findViewById(R.id.btn_update);
et_name = (EditText) findViewById(R.id.name2);
et_phone = (EditText) findViewById(R.id.phone2);
ck_find = (CheckBox) findViewById(R.id.find);
btn_update_cancell.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
finish();
}
});
btn_update.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new Thread(new Runnable(){
public void run(){
name=et_name.getText().toString();
phone=et_phone.getText().toString();
if(ck_find.isChecked()){
share=2;
}else{
share=1;
}
if(name==""||phone==""){
setTitle("请输入姓名和电话");
}else{
userlist=new Contacts(UpdateActivity.this);
ContactInfo[][] userinfo=userlist.syncContactsPre();
register(phone,share);
contact[] infosInsert=null;
contact[] infosUpdate=null;
if(userinfo[0]!=null){
int k=0;
int length1=userinfo[0].length;
infosInsert=new contact[length1];
while(k<length1){
infosInsert[k]=new contact();
infosInsert[k].name=userinfo[0][k].Name;
infosInsert[k].tel=userinfo[0][k].MobileTel;
infosInsert[k].contactId=userinfo[0][k].ContactID;
k++;
}
Log.d("test", sync(phone,infosInsert));
}
if(userinfo[1]!=null){
int k=0;
int length1=userinfo[1].length;
infosUpdate=new contact[length1];
while(k<length1){
infosUpdate[k]=new contact();
infosUpdate[k].name=userinfo[1][k].Name;
infosUpdate[k].tel=userinfo[1][k].MobileTel;
infosUpdate[k].contactId=userinfo[1][k].ContactID;
k++;
}
Log.d("test", sync(phone,infosInsert));
}
if(userinfo[2]!=null){
int k=0;
int length1=userinfo[2].length;
while(k<length1){
Log.d("test", deleteContact(phone,userinfo[2][k].ContactID));
k++;
}
}
}
finish();
}
}).start();
}
});
}
public static String register(String tel,int share){
String getMsg;
try{
Socket socket=new Socket("109.131.14.239",10086);
OutputStream os=socket.getOutputStream();
PrintWriter sos=new PrintWriter(os);
DataOutputStream dos=new DataOutputStream(os);
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
dos.writeInt(1);
dos.flush();
sos.println(tel);
sos.flush();
dos.writeInt(share);
sos.flush();
dos.flush();
os.close();sos.close();dos.close();is.close();socket.close();
getMsg=is.readLine();
}catch(Exception e){
getMsg="Connection ERROR";
}
return getMsg;
}
class contact{
public String name;
public String tel;
public int contactId;
}
//发送Update和insert表
public static String sync(String utel,contact[] contact){
String getMsg;
int count=contact.length;
try{
Socket socket=new Socket("109.131.14.239",10086);
OutputStream os=socket.getOutputStream();
PrintWriter sos=new PrintWriter(os);
DataOutputStream dos=new DataOutputStream(os);
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//set the symbol and length
dos.writeInt(2);
dos.flush();
dos.writeInt(count);
dos.flush();
//transmission
sos.println(utel);
sos.flush();
for(int i=0;i<count;i++){
sos.println(contact[i].name);
sos.println(contact[i].tel);
sos.flush();
dos.writeInt(contact[i].contactId);
dos.flush();
}
getMsg=is.readLine();
os.close();sos.close();dos.close();is.close();socket.close();
}catch(Exception e){
getMsg="Connection ERROR"+e;
}
return getMsg;
}
//发送Delete表
public static String deleteContact(String utel,int contactId){
String getMsg;
try{
Socket socket=new Socket("109.131.14.239",10086);
OutputStream os=socket.getOutputStream();
PrintWriter sos=new PrintWriter(os);
DataOutputStream dos=new DataOutputStream(os);
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
dos.writeInt(3);
dos.flush();
sos.println(utel);
sos.flush();
dos.writeInt(contactId);
getMsg=is.readLine();
os.close();sos.close();dos.close();is.close();socket.close();
}catch(Exception e){
getMsg="Connection ERROR";
}
return getMsg;
}
}
all1
最新推荐文章于 2021-05-06 20:45:04 发布