Android: Fix PermissionsHandler activity detection

This commit is contained in:
Sepalani 2024-09-01 12:31:26 +04:00
parent 7520f427a9
commit 820cf5bcd8
3 changed files with 11 additions and 7 deletions

View file

@ -15,6 +15,7 @@ import android.widget.TextView
import androidx.annotation.ColorInt
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.color.MaterialColors
import com.google.android.material.datepicker.CalendarConstraints
@ -59,6 +60,9 @@ class SettingsAdapter(
val settings: Settings?
get() = fragmentView.settings
val fragmentActivity: FragmentActivity
get() = fragmentView.fragmentActivity
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SettingViewHolder {
val inflater = LayoutInflater.from(parent.context)
return when (viewType) {

View file

@ -61,8 +61,8 @@ class SwitchSettingViewHolder(
if (setting.setting === BooleanSetting.MAIN_EMULATE_WII_SPEAK && isChecked) {
if (!PermissionsHandler.hasRecordAudioPermission(itemView.context)) {
val settingsActivity = itemView.context as Activity
PermissionsHandler.requestRecordAudioPermission(settingsActivity)
val currentActivity = adapter.fragmentActivity as Activity
PermissionsHandler.requestRecordAudioPermission(currentActivity)
}
}

View file

@ -31,6 +31,7 @@ class ActivityTracker : ActivityLifecycleCallbacks {
}
override fun onActivityResumed(activity: Activity) {
currentActivity = activity
resumedActivities.add(activity)
if (!backgroundExecutionAllowed && !resumedActivities.isEmpty()) {
backgroundExecutionAllowed = true
@ -39,6 +40,9 @@ class ActivityTracker : ActivityLifecycleCallbacks {
}
override fun onActivityPaused(activity: Activity) {
if (currentActivity === activity) {
currentActivity = null
}
resumedActivities.remove(activity)
if (backgroundExecutionAllowed && resumedActivities.isEmpty()) {
backgroundExecutionAllowed = false
@ -54,11 +58,7 @@ class ActivityTracker : ActivityLifecycleCallbacks {
override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle) {}
override fun onActivityDestroyed(activity: Activity) {
if (currentActivity === activity) {
currentActivity = null
}
}
override fun onActivityDestroyed(activity: Activity) {}
companion object {
@JvmStatic