all1

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;
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值