ChatActivity
hacker98
plain_text
a year ago
11 kB
8
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