sdfsdfsd
hacker98
plain_text
a year ago
7.5 kB
4
Indexable
package com.example.chatappdemo;
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.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
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.databinding.ActivityMainBinding;
import com.example.chatappdemo.fragment.FriendRequestFragment;
import com.example.chatappdemo.fragment.MyProfileFragment;
import com.example.chatappdemo.fragment.RecentChatFragment;
import com.example.chatappdemo.fragment.ScanFragment;
import com.example.chatappdemo.global.Global;
import com.example.chatappdemo.model.Conversation;
import com.example.chatappdemo.model.Myinfo;
import com.example.chatappdemo.model.ReceiveRequest;
import com.example.chatappdemo.socket.SocketServerService;
import com.google.android.material.navigation.NavigationView;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawerLayout;
private NavigationView navigationView;
private Toolbar toolbar;
private static final String TAG = "SocketServerClient";
private TextView txtNavMyName;
// service
private BroadcastReceiver updateNameReceiver;
private ActivityMainBinding binding;
private MyinfoDAO myinfoDAO;
private Myinfo myinfo;
static {
System.loadLibrary("cal-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setViewReference();
ConversationDAO conversationDAO = new ConversationDAO(this);
ReceiveRequestDAO receiveRequestDAO = new ReceiveRequestDAO(this);
SentRequestDAO sentRequestDAO = new SentRequestDAO(this);
myinfoDAO = new MyinfoDAO(this);
setUpSideBar(savedInstanceState);
// Create new my account if it's not exist
createMyAccount();
runServerSocket();
loadUI();
registerReceiver();
}
private void registerReceiver() {
// User change name
String name;
updateNameReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(">>> Receive change name", intent.getStringExtra("My name"));
txtNavMyName.setText(intent.getStringExtra("My name"));
}
};
IntentFilter filter = new IntentFilter("com.example.chatappdemo.CHANGE_NAME");
registerReceiver(updateNameReceiver, filter);
}
private void loadUI() {
View navHeader = binding.navView.getHeaderView(0);
txtNavMyName = (TextView) navHeader.findViewById(R.id.nav_my_name);
txtNavMyName.setText(Global.myInfo.getName());
TextView txtNavMyIp = (TextView) navHeader.findViewById(R.id.nav_my_ip);
txtNavMyIp.setText(Global.myInfo.getMyIP());
}
private void runServerSocket() {
Intent serviceIntent = new Intent(this, SocketServerService.class);
startService(serviceIntent);
}
private void createMyAccount() {
String myIP = Global.getDevicesIP();
javaExternal func = new javaExternal();
MyinfoDAO myinfoDAO = new MyinfoDAO(this);
Log.i("TAG", myIP);
myinfo = myinfoDAO.getInfoByIP(myIP);
if (myinfo == null) {
RSAKey rsaKey = func.generateKeyRSAObject();
Log.i(TAG, "khoa cong khai: " + rsaKey.getPublicKey());
Log.i(TAG, "khoa bi mat: " + rsaKey.getPrivateKey());
Random random = new Random();
String randomName = "User " + random.nextInt(1000000);
myinfo = new Myinfo(myIP, randomName, rsaKey.getPublicKey(), rsaKey.getPrivateKey());
myinfoDAO.insertMyModel(myinfo);
}
Global.myInfo = myinfo;
}
private void setUpSideBar(Bundle savedInstanceState) {
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open_nav,
R.string.close_nav);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new RecentChatFragment()).commit();
navigationView.setCheckedItem(R.id.nav_recent_chat);
}
}
private void setViewReference() {
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
toolbar = findViewById(R.id.toolbar); //Ignore red line errors
setSupportActionBar(toolbar);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_scan:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ScanFragment()).commit();
break;
case R.id.nav_recent_chat:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new RecentChatFragment()).commit();
break;
case R.id.nav_my_profile:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new MyProfileFragment()).commit();
break;
case R.id.nav_friend_request:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new FriendRequestFragment()).commit();
break;
default:
break;
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if(currentFragment instanceof RecentChatFragment){
super.onBackPressed();
}else{
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new RecentChatFragment()).commit();
}
}
@Override
public void onDestroy() {
super.onDestroy();
// Hủy đăng ký BroadcastReceiver khi Fragment bị hủy
Log.i("Socket", "fragment bi huy");
if (updateNameReceiver != null) {
unregisterReceiver(updateNameReceiver);
}
}
}Editor is loading...
Leave a Comment