sdfsdfsd
hacker98
plain_text
5 months ago
7.5 kB
2
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