@@ -9,6 +9,7 @@ import android.net.Uri
99import android.os.Bundle
1010import android.os.Handler
1111import android.os.Looper
12+ import android.view.Menu
1213import android.view.MenuItem
1314import android.view.View
1415import android.webkit.*
@@ -35,48 +36,35 @@ class ActionPageOnline : AppCompatActivity() {
3536 private var progressPolling: Timer ? = null
3637 private var fileSelectedInterface: ParamsFileChooserRender .FileSelectedInterface ? = null
3738 private val ACTION_FILE_PATH_CHOOSER = 65400
38-
39- // ID định danh cho mục menu mới
39+
40+ // ID định danh cho mục menu mở trình duyệt
4041 private val MENU_OPEN_BROWSER = 1001
4142
4243 override fun onCreate (savedInstanceState : Bundle ? ) {
4344 super .onCreate(savedInstanceState)
4445
46+ // Sử dụng ThemeModeState để quản lý giao diện
4547 themeMode = ThemeModeState .switchTheme(this )
4648
4749 binding = ActivityActionPageOnlineBinding .inflate(layoutInflater)
4850 setContentView(binding.root)
4951
50- // Lấy toolbar từ layout được include (webappbar)
52+ // Thiết lập Toolbar từ layout được include (webappbar)
5153 val toolbar = binding.webappbar.toolbar
5254 setSupportActionBar(toolbar)
5355 setTitle(R .string.app_name)
5456
55- supportActionBar?.setDisplayHomeAsUpEnabled(true )
56- supportActionBar?.setHomeButtonEnabled(true )
57-
58- toolbar.setNavigationOnClickListener {
59- finish()
57+ // Hiển thị nút quay lại
58+ supportActionBar?.apply {
59+ setDisplayHomeAsUpEnabled(true )
60+ setHomeButtonEnabled(true )
6061 }
6162
62- // --- THÊM MENU 3 CHẤM BẰNG CODE ---
63- // Thêm mục "Mở bằng trình duyệt" vào menu
64- toolbar.menu.add(0 , MENU_OPEN_BROWSER , 0 , " Mở bằng trình duyệt" ).apply {
65- setShowAsAction(MenuItem .SHOW_AS_ACTION_NEVER )
66- }
67-
68- // Xử lý sự kiện khi click vào menu
69- toolbar.setOnMenuItemClickListener { item ->
70- when (item.itemId) {
71- MENU_OPEN_BROWSER -> {
72- openInDefaultBrowser()
73- true
74- }
75- else -> false
76- }
63+ toolbar.setNavigationOnClickListener {
64+ finish()
7765 }
78- // ----------------------------------
7966
67+ // Xử lý nút back chuẩn Android 13+
8068 onBackPressedDispatcher.addCallback(this ) {
8169 if (binding.krOnlineWebview.canGoBack()) {
8270 binding.krOnlineWebview.goBack()
@@ -88,7 +76,37 @@ class ActionPageOnline : AppCompatActivity() {
8876 loadIntentData()
8977 }
9078
91- // Hàm thực hiện mở URL hiện tại bằng trình duyệt mặc định của máy
79+ /* *
80+ * Tạo menu 3 chấm (Overflow Menu) trực tiếp bằng code
81+ */
82+ override fun onCreateOptionsMenu (menu : Menu ? ): Boolean {
83+ // SHOW_AS_ACTION_NEVER sẽ ép item này vào menu 3 chấm mặc định
84+ menu?.add(0 , MENU_OPEN_BROWSER , 0 , " Mở bằng trình duyệt" )?.apply {
85+ setShowAsAction(MenuItem .SHOW_AS_ACTION_NEVER )
86+ }
87+ return true
88+ }
89+
90+ /* *
91+ * Xử lý sự kiện khi click vào item trong menu 3 chấm
92+ */
93+ override fun onOptionsItemSelected (item : MenuItem ): Boolean {
94+ return when (item.itemId) {
95+ MENU_OPEN_BROWSER -> {
96+ openInDefaultBrowser()
97+ true
98+ }
99+ android.R .id.home -> {
100+ finish()
101+ true
102+ }
103+ else -> super .onOptionsItemSelected(item)
104+ }
105+ }
106+
107+ /* *
108+ * Mở URL hiện tại của WebView bằng trình duyệt mặc định của hệ thống
109+ */
92110 private fun openInDefaultBrowser () {
93111 val currentUrl = binding.krOnlineWebview.url
94112 if (! currentUrl.isNullOrEmpty()) {
@@ -99,7 +117,7 @@ class ActionPageOnline : AppCompatActivity() {
99117 Toast .makeText(this , " Không tìm thấy trình duyệt phù hợp" , Toast .LENGTH_SHORT ).show()
100118 }
101119 } else {
102- Toast .makeText(this , " Trang web hiện không có URL hợp lệ " , Toast .LENGTH_SHORT ).show()
120+ Toast .makeText(this , " Đang tải trang, vui lòng đợi... " , Toast .LENGTH_SHORT ).show()
103121 }
104122 }
105123
@@ -111,11 +129,13 @@ class ActionPageOnline : AppCompatActivity() {
111129 title = extras.getString(" title" )
112130 }
113131
132+ // Load URL vào Webview
114133 when {
115134 extras.containsKey(" config" ) -> initWebview(extras.getString(" config" ))
116135 extras.containsKey(" url" ) -> initWebview(extras.getString(" url" ))
117136 }
118137
138+ // Xử lý download nếu có
119139 if (extras.containsKey(" downloadUrl" )) {
120140 val downloader = Downloader (this )
121141 val url = extras.getString(" downloadUrl" )!!
0 commit comments