You've already forked Magisk
mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-09-06 06:36:58 +00:00
Added leanback activity that implements several functions which custom dialogs depend on
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
package com.topjohnwu.magisk.ui.base
|
||||
|
||||
import android.content.Intent
|
||||
|
||||
interface IBaseLeanback {
|
||||
|
||||
fun runWithExternalRW(callback: Runnable)
|
||||
fun runWithPermissions(vararg permissions: String, callback: Runnable)
|
||||
fun startActivityForResult(
|
||||
intent: Intent,
|
||||
requestCode: Int,
|
||||
listener: BaseActivity.ActivityResultListener
|
||||
)
|
||||
|
||||
}
|
||||
@@ -2,12 +2,11 @@ package com.topjohnwu.magisk.ui.base
|
||||
|
||||
import androidx.core.net.toUri
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import com.skoumal.teanity.view.TeanityActivity
|
||||
import com.topjohnwu.magisk.utils.Utils
|
||||
|
||||
|
||||
abstract class MagiskActivity<ViewModel : MagiskViewModel, Binding : ViewDataBinding> :
|
||||
TeanityActivity<ViewModel, Binding>() {
|
||||
MagiskLeanbackActivity<ViewModel, Binding>() {
|
||||
|
||||
fun openUrl(url: String) = Utils.openLink(this, url.toUri())
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.topjohnwu.magisk.ui.base
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import androidx.collection.SparseArrayCompat
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import com.karumi.dexter.Dexter
|
||||
import com.karumi.dexter.MultiplePermissionsReport
|
||||
import com.karumi.dexter.PermissionToken
|
||||
import com.karumi.dexter.listener.PermissionRequest
|
||||
import com.karumi.dexter.listener.multi.MultiplePermissionsListener
|
||||
import com.skoumal.teanity.view.TeanityActivity
|
||||
import com.topjohnwu.magisk.Const
|
||||
|
||||
abstract class MagiskLeanbackActivity<ViewModel : MagiskViewModel, Binding : ViewDataBinding> :
|
||||
TeanityActivity<ViewModel, Binding>(), IBaseLeanback {
|
||||
|
||||
private val resultListeners = SparseArrayCompat<BaseActivity.ActivityResultListener>()
|
||||
|
||||
@Deprecated("Permissions will be checked in a different streamlined way")
|
||||
override fun runWithExternalRW(callback: Runnable) {
|
||||
runWithPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE, callback = callback)
|
||||
}
|
||||
|
||||
@Deprecated("Permissions will be checked in a different streamlined way")
|
||||
override fun runWithPermissions(vararg permissions: String, callback: Runnable) {
|
||||
Dexter.withActivity(this)
|
||||
.withPermissions(*permissions)
|
||||
.withListener(object : MultiplePermissionsListener {
|
||||
override fun onPermissionsChecked(report: MultiplePermissionsReport?) {
|
||||
if (report?.areAllPermissionsGranted() == true) {
|
||||
Const.EXTERNAL_PATH.mkdirs()
|
||||
callback.run()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPermissionRationaleShouldBeShown(
|
||||
permissions: MutableList<PermissionRequest>?,
|
||||
token: PermissionToken?
|
||||
) = Unit
|
||||
})
|
||||
.check()
|
||||
}
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
resultListeners.get(requestCode)?.apply {
|
||||
resultListeners.remove(requestCode)
|
||||
onActivityResult(resultCode, data)
|
||||
}
|
||||
}
|
||||
|
||||
override fun startActivityForResult(
|
||||
intent: Intent,
|
||||
requestCode: Int,
|
||||
listener: BaseActivity.ActivityResultListener
|
||||
) {
|
||||
resultListeners.put(requestCode, listener)
|
||||
startActivityForResult(intent, requestCode)
|
||||
}
|
||||
}
|
||||
@@ -7,14 +7,12 @@ import com.topjohnwu.magisk.Const
|
||||
import com.topjohnwu.magisk.R
|
||||
import com.topjohnwu.magisk.databinding.FragmentMagiskBinding
|
||||
import com.topjohnwu.magisk.model.events.*
|
||||
import com.topjohnwu.magisk.ui.base.MagiskActivity
|
||||
import com.topjohnwu.magisk.utils.ISafetyNetHelper
|
||||
import com.topjohnwu.magisk.view.MarkDownWindow
|
||||
import com.topjohnwu.magisk.view.SafetyNet
|
||||
import com.topjohnwu.magisk.view.SafetyNet.EXT_APK
|
||||
import com.topjohnwu.magisk.view.dialogs.CustomAlertDialog
|
||||
import com.topjohnwu.magisk.view.dialogs.EnvFixDialog
|
||||
import com.topjohnwu.magisk.view.dialogs.ManagerInstallDialog
|
||||
import com.topjohnwu.magisk.view.dialogs.UninstallDialog
|
||||
import com.topjohnwu.magisk.view.dialogs.*
|
||||
import com.topjohnwu.net.Networking
|
||||
import com.topjohnwu.superuser.Shell
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
@@ -47,8 +45,8 @@ class MagiskFragment : NewMagiskFragment<HomeViewModel, FragmentMagiskBinding>()
|
||||
installManager()
|
||||
return
|
||||
}
|
||||
//FIXME dialog requires old base
|
||||
//MagiskInstallDialog(requireActivity()).show()
|
||||
|
||||
MagiskInstallDialog(requireActivity() as MagiskActivity<*, *>).show()
|
||||
}
|
||||
|
||||
private fun installManager() = ManagerInstallDialog(requireActivity()).show()
|
||||
|
||||
Reference in New Issue
Block a user