Skip to content

Commit da9ce3e

Browse files
committed
refactor(ui): apply XXPermission APIs in PerfMainActivity
1 parent f57e137 commit da9ce3e

File tree

1 file changed

+28
-73
lines changed

1 file changed

+28
-73
lines changed

app/src/main/java/com/osfans/trime/ui/main/PrefMainActivity.kt

+28-73
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
11
package com.osfans.trime.ui.main
22

3-
import android.Manifest
43
import android.content.Intent
5-
import android.content.pm.PackageManager
6-
import android.os.Build
74
import android.os.Bundle
85
import android.view.Menu
96
import android.view.MenuItem
107
import android.view.ViewGroup
118
import androidx.activity.viewModels
12-
import androidx.appcompat.app.AlertDialog
139
import androidx.appcompat.app.AppCompatActivity
1410
import androidx.appcompat.app.AppCompatDelegate
15-
import androidx.core.app.ActivityCompat
1611
import androidx.core.view.ViewCompat
1712
import androidx.core.view.WindowInsetsCompat
1813
import androidx.core.view.forEach
@@ -22,22 +17,20 @@ import androidx.navigation.fragment.NavHostFragment
2217
import androidx.navigation.ui.AppBarConfiguration
2318
import androidx.navigation.ui.setupWithNavController
2419
import com.blankj.utilcode.util.ToastUtils
20+
import com.hjq.permissions.OnPermissionCallback
21+
import com.hjq.permissions.Permission
22+
import com.hjq.permissions.XXPermissions
2523
import com.osfans.trime.R
2624
import com.osfans.trime.core.Rime
2725
import com.osfans.trime.data.AppPrefs
2826
import com.osfans.trime.databinding.ActivityPrefBinding
2927
import com.osfans.trime.ui.setup.SetupActivity
30-
import com.osfans.trime.util.RimeUtils
3128
import com.osfans.trime.util.applyTranslucentSystemBars
3229
import com.osfans.trime.util.withLoadingDialog
3330
import kotlinx.coroutines.Dispatchers
34-
import kotlinx.coroutines.delay
35-
import kotlinx.coroutines.launch
3631
import kotlinx.coroutines.withContext
3732

38-
class PrefMainActivity :
39-
AppCompatActivity(),
40-
ActivityCompat.OnRequestPermissionsResultCallback {
33+
class PrefMainActivity : AppCompatActivity() {
4134
private val viewModel: MainViewModel by viewModels()
4235
private val prefs get() = AppPrefs.defaultInstance()
4336

@@ -107,28 +100,6 @@ class PrefMainActivity :
107100
if (SetupActivity.shouldSetup()) {
108101
startActivity(Intent(this, SetupActivity::class.java))
109102
}
110-
requestExternalStoragePermission()
111-
}
112-
113-
override fun onRequestPermissionsResult(
114-
requestCode: Int,
115-
permissions: Array<out String>,
116-
grantResults: IntArray
117-
) {
118-
if (requestCode == PERMISSION_REQUEST_EXTERNAL_STORAGE) {
119-
// Request for external storage permission
120-
if (grantResults.size == 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
121-
lifecycleScope.launch {
122-
ToastUtils.showShort(R.string.external_storage_permission_granted)
123-
delay(500)
124-
RimeUtils.deploy(this@PrefMainActivity)
125-
}
126-
} else {
127-
// Permission request was denied
128-
ToastUtils.showShort(R.string.external_storage_permission_denied)
129-
}
130-
}
131-
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
132103
}
133104

134105
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
@@ -145,7 +116,7 @@ class PrefMainActivity :
145116
lifecycleScope.withLoadingDialog(
146117
this, 200L, R.string.deploy_progress
147118
) {
148-
withContext(Dispatchers.IO) {
119+
withContext(Dispatchers.Default) {
149120
Rime.destroy()
150121
Rime.get(this@PrefMainActivity, true)
151122
}
@@ -161,47 +132,31 @@ class PrefMainActivity :
161132
}
162133
}
163134

164-
private fun requestExternalStoragePermission() {
165-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
166-
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
167-
PackageManager.PERMISSION_GRANTED
168-
) {
169-
// Permission is already available, return
170-
return
171-
} else {
172-
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
173-
AlertDialog.Builder(this)
174-
.setMessage(R.string.external_storage_access_required)
175-
.setCancelable(true)
176-
.setPositiveButton(android.R.string.ok) { _, _ ->
177-
ActivityCompat.requestPermissions(
178-
this,
179-
arrayOf(
180-
Manifest.permission.WRITE_EXTERNAL_STORAGE,
181-
Manifest.permission.READ_EXTERNAL_STORAGE
182-
),
183-
PERMISSION_REQUEST_EXTERNAL_STORAGE
184-
)
185-
}
186-
.setNegativeButton(android.R.string.cancel, null)
187-
.show()
188-
} else {
189-
ToastUtils.showShort(R.string.external_storage_permission_not_available)
135+
override fun onResume() {
136+
super.onResume()
137+
requestExternalStoragePermission()
138+
}
190139

191-
ActivityCompat.requestPermissions(
192-
this,
193-
arrayOf(
194-
Manifest.permission.WRITE_EXTERNAL_STORAGE,
195-
Manifest.permission.READ_EXTERNAL_STORAGE
196-
),
197-
PERMISSION_REQUEST_EXTERNAL_STORAGE
198-
)
140+
private fun requestExternalStoragePermission() {
141+
XXPermissions.with(this)
142+
.permission(Permission.Group.STORAGE)
143+
.request(object : OnPermissionCallback {
144+
override fun onGranted(permissions: MutableList<String>?, all: Boolean) {
145+
if (all) {
146+
ToastUtils.showShort(R.string.external_storage_permission_granted)
147+
}
199148
}
200-
}
201-
}
202-
}
203149

204-
companion object {
205-
private const val PERMISSION_REQUEST_EXTERNAL_STORAGE = 0
150+
override fun onDenied(permissions: MutableList<String>?, never: Boolean) {
151+
if (never) {
152+
ToastUtils.showShort(R.string.external_storage_permission_denied)
153+
XXPermissions.startPermissionActivity(
154+
this@PrefMainActivity, permissions
155+
)
156+
} else {
157+
ToastUtils.showShort(R.string.external_storage_permission_denied)
158+
}
159+
}
160+
})
206161
}
207162
}

0 commit comments

Comments
 (0)