ChatActivity
hacker98
plain_text
6 months ago
11 kB
1
Indexable
main
package com.example.chatappdemo; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.example.chatappdemo.DAO.ConversationDAO; import com.example.chatappdemo.DAO.MyinfoDAO; import com.example.chatappdemo.DAO.ReceiveRequestDAO; import com.example.chatappdemo.DAO.SentRequestDAO; import com.example.chatappdemo.model.Conversation; import com.example.chatappdemo.model.Myinfo; import com.example.chatappdemo.model.ReceiveRequest; import com.example.chatappdemo.model.SentRequest; import org.json.JSONObject; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Enumeration; public class ChatActivity extends AppCompatActivity { private Button AddFriend,ButtonAccept,ButtonRefuse; private javaExternal func = new javaExternal(); private BroadcastReceiver newRespond; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chat); AddFriend = findViewById(R.id.AddFriendLayout); ButtonAccept = findViewById(R.id.Accept); ButtonRefuse=findViewById(R.id.refuse); String myIP=getDeviceIpAddress(); Intent intent=getIntent(); String conversation_IP=intent.getStringExtra("conversation_IP"); ConversationDAO conversationDAO=new ConversationDAO(this); ReceiveRequestDAO receiveRequestDAO = new ReceiveRequestDAO(this); SentRequestDAO sentRequestDAO = new SentRequestDAO(this); MyinfoDAO myinfoDAO = new MyinfoDAO(this); Conversation conversation= conversationDAO.getConversationByIPReceive(conversation_IP); ReceiveRequest receiveRequest = receiveRequestDAO.getReceiveRequestByIP(conversation_IP); SentRequest sentRequest = sentRequestDAO.getSentRequestByIP(conversation_IP); Myinfo myinfo = myinfoDAO.getInfoByIP(myIP); // set up tham so cho fragment Fragment fragment = new ChatFragment(); Bundle bundle = new Bundle(); bundle.putString("conversation_IP",conversation_IP); bundle.putString("MyIP",myIP); fragment.setArguments(bundle); // Hiển thị ChatFragmentcv if (conversation != null) { findViewById(R.id.fragment_container).setVisibility(View.VISIBLE); findViewById(R.id.SentRequestLayout).setVisibility(View.GONE); getSupportFragmentManager().beginTransaction() .replace(R.id.fragment_container, fragment) .commit(); }else if(receiveRequest !=null || sentRequest!=null){ if(sentRequest != null){ findViewById(R.id.fragment_container).setVisibility(View.GONE); findViewById(R.id.SentRequestLayout).setVisibility(View.VISIBLE); }else{ findViewById(R.id.fragment_container).setVisibility(View.GONE); findViewById(R.id.RequestAddFriendLayout).setVisibility(View.VISIBLE); } }else{ findViewById(R.id.fragment_container).setVisibility(View.GONE); findViewById(R.id.AddFriendLayout).setVisibility(View.VISIBLE); } // Dang ky nhan respond newRespond = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String ClientIP = intent.getStringExtra("ClientIP"); String status= intent.getStringExtra("status"); if(ClientIP.equals(conversation_IP)){ Toast.makeText(ChatActivity.this,"Dia chi IP "+ClientIP+" da chap nhan loi moi ket ban",Toast.LENGTH_SHORT).show(); if(status.equals("ACCEPT")){ findViewById(R.id.SentRequestLayout).setVisibility(View.GONE); findViewById(R.id.fragment_container).setVisibility(View.VISIBLE); getSupportFragmentManager().beginTransaction() .replace(R.id.fragment_container, fragment) .commit(); } }else{ Toast.makeText(ChatActivity.this,"Dia chi IP "+ClientIP+" da tu choi loi moi ket ban",Toast.LENGTH_SHORT).show(); findViewById(R.id.SentRequestLayout).setVisibility(View.GONE); findViewById(R.id.AddFriendLayout).setVisibility(View.VISIBLE); } } }; IntentFilter filter = new IntentFilter("com.example.chatappdemo.CHANGE_ADAPTER_ACCEPT"); IntentFilter filter1 = new IntentFilter("com.example.chatappdemo.CHANGE_ADAPTER_REFUSE"); registerReceiver(newRespond,filter); registerReceiver(newRespond,filter1); AddFriend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { JSONObject messageJson = new JSONObject(); JSONObject messageContentJson = new JSONObject(); try{ messageJson.put("type", "FRIEND_REQUEST"); messageContentJson.put("IPRequest",myIP); messageContentJson.put("name",myinfo.getName()); messageContentJson.put("publicKey",myinfo.getPublicKey()); messageJson.put("content",messageContentJson); // luu vao database SentRequest sentRequest1=new SentRequest(conversation_IP,"tung","pending"); sentRequestDAO.insertSentRequest(sentRequest1); // SEND ChatClient chatClient = new ChatClient(conversation_IP,1234,messageJson.toString()); chatClient.start(); // Change Layout findViewById(R.id.AddFriendLayout).setVisibility(View.GONE); findViewById(R.id.SentRequestLayout).setVisibility(View.VISIBLE); }catch (Exception e){ e.printStackTrace(); Log.e("Socket",e.getMessage()); } } }); ButtonAccept.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { JSONObject messageJson = new JSONObject(); JSONObject messageContentJson = new JSONObject(); try { // tao khoa ma hoa String keyEncrypt128 = func.generateKey128(); String keyEncrypt256=func.generateKey256(); String keyEncryptRSA128 = func.encryptRSA(keyEncrypt128,receiveRequest.getPublicKey()); String keyEncryptRSA256 = func.encryptRSA(keyEncrypt256,receiveRequest.getPublicKey()); // tao json gui phan hoi messageJson.put("type","FRIEND_RESPONSE"); messageContentJson.put("IPSent",myIP); messageContentJson.put("name",myinfo.getName()); messageContentJson.put("key128",keyEncryptRSA128); messageContentJson.put("key256",keyEncryptRSA256); messageContentJson.put("status","ACCEPT"); messageJson.put("content",messageContentJson); // save database Conversation conversation1= new Conversation(conversation_IP,receiveRequest.getName()," "," ",keyEncrypt128,keyEncrypt256,"AES128"); conversationDAO.insertConversation(conversation1); receiveRequestDAO.deleteReceiveRequestByIP(conversation_IP); ChatClient chatClient = new ChatClient(conversation_IP,1234,messageJson.toString()); chatClient.start(); findViewById(R.id.RequestAddFriendLayout).setVisibility(View.GONE); findViewById(R.id.fragment_container).setVisibility(View.VISIBLE); getSupportFragmentManager().beginTransaction() .replace(R.id.fragment_container, fragment) .commit(); }catch (Exception e){ e.printStackTrace(); Log.e("socket",e.getMessage()); } } }); ButtonRefuse.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { JSONObject messageJson = new JSONObject(); JSONObject messageContentJson = new JSONObject(); try { messageJson.put("type","FRIEND_RESPONSE"); messageContentJson.put("IPSent",conversation_IP); messageContentJson.put("name",myinfo.getName()); messageContentJson.put("key"," "); messageContentJson.put("status","REFUSE"); messageJson.put("content",messageContentJson); receiveRequestDAO.deleteReceiveRequestByIP(conversation_IP); ChatClient chatClient = new ChatClient(conversation_IP,1234,messageJson.toString()); chatClient.start(); findViewById(R.id.RequestAddFriendLayout).setVisibility(View.GONE); findViewById(R.id.AddFriendLayout).setVisibility(View.VISIBLE); }catch (Exception e){ e.printStackTrace(); Log.e("socket",e.getMessage()); } } }); } private String getDeviceIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().matches("\\d+\\.\\d+\\.\\d+\\.\\d+")) { return inetAddress.getHostAddress(); } } } } catch (Exception ex) { Log.e("Socket", "Không thể lấy địa chỉ IP của thiết bị", ex); } return null; } }
Editor is loading...
Leave a Comment