当前位置: 代码迷 >> 综合 >> ChatAPP --- 加好友
  详细解决方案

ChatAPP --- 加好友

热度:46   发布时间:2023-12-14 14:47:47.0

一,简介
通过输入对方的ip地址加为好友,或者是扫描对方的二维码加为好友


二,原理实现
创建好友数据库---这里使用GreenDao,

当前使用的方法是ip地址加为好友,
过程是:发送端:输入另一台IP地址----发送给另一台手机----收到另一台手机的确认情况后返回成功信息----添加到好友数据库,并跳回首页。
             接收端: 另一台手机接收到要添加好友的信息后-----点击确认----并返回信息,同时添加到好友数据库,并跳回首页。

三,代码
发送端

/*** 发送要添加好友的IP*/@OnClick(R.id.btn)public void putid(){ip_str = et_ip.getText().toString().trim();if (!ip_str.isEmpty()){Thread thread = new Thread(){@Overridepublic void run() {super.run();try {sockets = new Socket(ip_str,8000);outputStream = sockets.getOutputStream();byte[] buffer = TalkUtil.CreateJson(getString(R.string.make_friends) , ip);outputStream.write(buffer);} catch (IOException e) {e.printStackTrace();}}};thread.start();}else{Toast.makeText(this , R.string.put_ip , Toast.LENGTH_SHORT).show();}}
/*** 发出端收到另一台手机的确认情况后返回成功信息:发出确认* 添加到好友数据库,并跳回首页。* 接收端并返回确认信息,同时添加到好友数据库,并跳回首页。*/@OnClick(R.id.btn)public void onbtn(){String bei = et_bei.getText().toString().trim();ip_str = ip_et.getText().toString().trim();String time = time_et.getText().toString().trim();String headUrl = StringUtil.SaveHead(this ,ip_str);//判断当前的IP是否存在if (query(ip_str)){Friends friends = new Friends();friends.setUsername(bei);friends.setIp(ip_str);friends.setTime(time);friends.setHeadurl(headUrl);friendsDao.insert(friends);//确认交友if (type.equals(getString(R.string.make_friends))){que_make_friend();}else {finish();}Toast.makeText(this , R.string.scuess_friend , Toast.LENGTH_SHORT).show();}else {Toast.makeText(this , R.string.yi_friend , Toast.LENGTH_SHORT).show();}}/*** 判断当前的IP是否存在* @param ip_str*/private boolean query(String ip_str) {QueryBuilder qb = friendsDao.queryBuilder();qb.where(FriendsDao.Properties.Ip.eq(ip_str));List<Friends> de = qb.list();if (de.size()==0){return true;}return false;}private void que_make_friend(){Thread thread = new Thread(){@Overridepublic void run() {super.run();try {sockets = new Socket(ip_str,8000);outputStream = sockets.getOutputStream();byte[] buffer = TalkUtil.CreateJson(getString(R.string.que_make_friend) , ip_str_r);outputStream.write(buffer);EditFriendActivity.this.finish();} catch (IOException e) {e.printStackTrace();}}};thread.start();}

接收端

public class  MyReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {String msg = intent.getStringExtra("msg");String type;try {JSONObject jsonObject = new JSONObject(msg);type = jsonObject.getString(Constant.type_key);//接收端交友时,发出。if (type.equals(getString(R.string.make_friends))){Intent editIntent = new Intent(AddFriendsActivity.this , EditFriendActivity.class);msg = jsonObject.getString(Constant.talk_key);editIntent.putExtra(Constant.Friend_Msg , msg);editIntent.putExtra(Constant.Friend_Type , type);startActivity(editIntent);}//接收端确认交友时,发出。if (type.equals(getString(R.string.que_make_friend))){msg = jsonObject.getString(Constant.talk_key);Intent editIntent = new Intent(AddFriendsActivity.this , EditFriendActivity.class);editIntent.putExtra(Constant.Friend_Msg , msg);editIntent.putExtra(Constant.Friend_Type , type);startActivity(editIntent);}finish();}catch (JSONException e){e.printStackTrace();}}}