@@ -53,11 +53,17 @@ class SplashActivity : AppCompatActivity() {
5353 return
5454 }
5555
56- // 2. Logic khởi đầu: Nếu chưa đồng ý hoặc thiếu quyền thì hiện Dialog
57- if (hasAgreed() && hasRequiredPermissions()) {
58- checkPermissionsNextStep()
59- } else {
56+ // 2. Logic khởi đầu: Tách biệt "Đồng ý điều khoản" và "Quyền hệ thống"
57+ if (! hasAgreed()) {
58+ // Nếu chưa từng đồng ý điều khoản, hiện Dialog đầu tiên
6059 showAgreementDialog()
60+ } else {
61+ // Đã đồng ý điều khoản rồi, chỉ kiểm tra quyền Android
62+ if (hasRequiredPermissions()) {
63+ checkPermissionsNextStep()
64+ } else {
65+ requestRequiredPermissions()
66+ }
6167 }
6268
6369 binding.startLogoXml.startAnimation(AnimationUtils .loadAnimation(this , R .anim.ic_settings_rotate))
@@ -72,10 +78,12 @@ class SplashActivity : AppCompatActivity() {
7278 getString(R .string.permission_dialog_title),
7379 getString(R .string.permission_dialog_message),
7480 Runnable {
75- // Người dùng đồng ý bảng Dialog -> Chuyển sang xin quyền bộ nhớ hệ thống
81+ // Quan trọng: Lưu trạng thái đồng ý ngay khi nhấn nút
82+ saveAgreement()
83+ // Sau đó mới đi xin quyền hệ thống
7684 requestRequiredPermissions()
7785 },
78- Runnable { finishAffinity() } // Không đồng ý -> Thoát ứng dụng
86+ Runnable { finishAffinity() }
7987 ).setCancelable(false )
8088 }
8189
@@ -106,7 +114,7 @@ class SplashActivity : AppCompatActivity() {
106114 }
107115
108116 private fun checkPermissionsNextStep () {
109- // Ưu tiên sau: Nếu là Android 11+ và chưa có quyền "All Files Access"
117+ // Nếu là Android 11+ và chưa có quyền "All Files Access"
110118 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R && ! Environment .isExternalStorageManager()) {
111119 requestManageAllFilesPermission()
112120 } else {
@@ -129,11 +137,9 @@ class SplashActivity : AppCompatActivity() {
129137 override fun onRequestPermissionsResult (requestCode : Int , permissions : Array <out String >, grantResults : IntArray ) {
130138 super .onRequestPermissionsResult(requestCode, permissions, grantResults)
131139 if (requestCode == REQUEST_CODE_PERMISSIONS ) {
132- // Nếu người dùng đồng ý các quyền bộ nhớ cơ bản
133140 if (grantResults.isNotEmpty() && grantResults.all { it == PackageManager .PERMISSION_GRANTED }) {
134141 checkPermissionsNextStep()
135142 } else {
136- // Nếu từ chối bất kỳ quyền nào -> Thoát app
137143 finishAffinity()
138144 }
139145 }
@@ -142,7 +148,6 @@ class SplashActivity : AppCompatActivity() {
142148 override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
143149 super .onActivityResult(requestCode, resultCode, data)
144150 if (requestCode == REQUEST_CODE_MANAGE_ALL_FILES ) {
145- // Sau khi từ màn hình cài đặt All Files quay lại, tiến hành check root
146151 checkRootAndStart()
147152 }
148153 }
@@ -154,9 +159,6 @@ class SplashActivity : AppCompatActivity() {
154159 if (started) return
155160 started = true
156161
157- // Khi đã vượt qua hết các bước xin quyền và bắt đầu check root -> Lưu trạng thái đồng ý
158- saveAgreement()
159-
160162 lifecycleScope.launch(Dispatchers .IO ) {
161163 hasRoot = KeepShellPublic .checkRoot()
162164 withContext(Dispatchers .Main ) {
0 commit comments