1
0
Fork 0
mirror of https://gitlab.com/futo-org/fcast.git synced 2025-06-24 21:25:23 +00:00

Fixed crash on Amazon FireStick when allowing SYSTEM_ALERT_PERMISSION.

This commit is contained in:
Koen 2023-11-17 09:39:24 +01:00
parent deb45d6462
commit 9322a89162

View file

@ -1,14 +1,13 @@
package com.futo.fcast.receiver package com.futo.fcast.receiver
import android.Manifest import android.Manifest
import android.animation.ValueAnimator
import android.app.AlertDialog import android.app.AlertDialog
import android.app.PendingIntent import android.app.PendingIntent
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.graphics.drawable.Animatable import android.graphics.drawable.Animatable
import android.graphics.drawable.TransitionDrawable
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
@ -16,7 +15,6 @@ import android.provider.Settings
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.view.animation.AccelerateDecelerateInterpolator
import android.widget.* import android.widget.*
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
@ -25,12 +23,7 @@ import androidx.core.content.ContextCompat
import com.google.android.exoplayer2.ExoPlayer import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.MediaItem import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.Player import com.google.android.exoplayer2.Player
import com.google.android.exoplayer2.SimpleExoPlayer
import com.google.android.exoplayer2.ui.PlayerView
import com.google.android.exoplayer2.ui.StyledPlayerView import com.google.android.exoplayer2.ui.StyledPlayerView
import com.google.android.exoplayer2.upstream.DataSource
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory
import com.google.android.exoplayer2.util.Util
import kotlinx.coroutines.* import kotlinx.coroutines.*
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import java.io.InputStream import java.io.InputStream
@ -187,13 +180,28 @@ class MainActivity : AppCompatActivity() {
} }
private fun requestSystemAlertWindowPermission() { private fun requestSystemAlertWindowPermission() {
if (!Settings.canDrawOverlays(this)) { val preferenceFileKey = "$packageName.PREFERENCE_FILE_KEY"
val permissionRequestFailedKey = "SYSTEM_ALERT_WINDOW_PERMISSION_REQUESTED_FAILED_KEY"
val sharedPref = this.getSharedPreferences(preferenceFileKey, Context.MODE_PRIVATE)
val hasPermissionRequestFailed = sharedPref.getBoolean(permissionRequestFailedKey, false)
if (!hasPermissionRequestFailed && !Settings.canDrawOverlays(this)) {
AlertDialog.Builder(this) AlertDialog.Builder(this)
.setTitle(R.string.permission_dialog_title) .setTitle(R.string.permission_dialog_title)
.setMessage(R.string.permission_dialog_message) .setMessage(R.string.permission_dialog_message)
.setPositiveButton(R.string.permission_dialog_positive_button) { _, _ -> .setPositiveButton(R.string.permission_dialog_positive_button) { _, _ ->
try {
val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:$packageName")) val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:$packageName"))
startActivityForResult(intent, REQUEST_CODE) startActivityForResult(intent, REQUEST_CODE)
} catch (e: Exception) {
Log.e("OverlayPermission", "Error requesting overlay permission", e)
with(sharedPref.edit()) {
putBoolean(permissionRequestFailedKey, true)
apply()
}
Toast.makeText(this, "An error occurred: ${e.message}", Toast.LENGTH_LONG).show()
}
} }
.setNegativeButton(R.string.permission_dialog_negative_button) { dialog, _ -> .setNegativeButton(R.string.permission_dialog_negative_button) { dialog, _ ->
dialog.dismiss() dialog.dismiss()