From a39b03e77838d4eefe8b00c25cdcc989596416ea Mon Sep 17 00:00:00 2001 From: Bnyro Date: Mon, 8 Aug 2022 12:01:25 +0200 Subject: [PATCH] fix crash --- .../com/github/libretube/dialogs/DownloadDialog.kt | 3 +-- .../com/github/libretube/dialogs/UpdateDialog.kt | 3 +-- .../github/libretube/fragments/PlayerFragment.kt | 2 +- .../libretube/preferences/InstanceSettings.kt | 5 ++--- .../com/github/libretube/services/BackgroundMode.kt | 13 +++++++++++++ .../com/github/libretube/services/UpdateService.kt | 11 ++++++++++- .../com/github/libretube/util/PermissionHelper.kt | 6 +++--- .../com/github/libretube/util/ResettableLazy.kt | 2 +- .../java/com/github/libretube/util/ThemeHelper.kt | 2 +- app/src/main/res/values/strings.xml | 2 +- 10 files changed, 34 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/github/libretube/dialogs/DownloadDialog.kt b/app/src/main/java/com/github/libretube/dialogs/DownloadDialog.kt index 5dbf63ea7..4f2ed94a1 100644 --- a/app/src/main/java/com/github/libretube/dialogs/DownloadDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/DownloadDialog.kt @@ -7,7 +7,6 @@ import android.util.Log import android.view.View import android.widget.ArrayAdapter import android.widget.Toast -import androidx.appcompat.app.AppCompatActivity import androidx.core.view.size import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope @@ -38,7 +37,7 @@ class DownloadDialog : DialogFragment() { fetchAvailableSources() - PermissionHelper.requestReadWrite(activity as AppCompatActivity) + PermissionHelper.requestReadWrite(requireActivity()) binding.title.text = ThemeHelper.getStyledAppName(requireContext()) diff --git a/app/src/main/java/com/github/libretube/dialogs/UpdateDialog.kt b/app/src/main/java/com/github/libretube/dialogs/UpdateDialog.kt index 4ddeceea7..715400bdd 100644 --- a/app/src/main/java/com/github/libretube/dialogs/UpdateDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/UpdateDialog.kt @@ -6,7 +6,6 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.util.Log -import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.DialogFragment import com.github.libretube.R import com.github.libretube.services.UpdateService @@ -28,7 +27,7 @@ class UpdateDialog( val downloadUrl = getDownloadUrl(updateInfo) Log.i("downloadUrl", downloadUrl.toString()) if (downloadUrl != null) { - PermissionHelper.requestReadWrite(activity as AppCompatActivity) + PermissionHelper.requestReadWrite(requireActivity()) val intent = Intent(context, UpdateService::class.java) intent.putExtra("downloadUrl", downloadUrl) context?.startService(intent) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index b6f4b282e..908073fa7 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -88,7 +88,6 @@ import com.google.android.exoplayer2.upstream.DefaultHttpDataSource import com.google.android.exoplayer2.util.RepeatModeUtil import com.google.android.exoplayer2.video.VideoSize import com.google.android.material.dialog.MaterialAlertDialogBuilder -import kotlin.math.abs import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -96,6 +95,7 @@ import org.chromium.net.CronetEngine import retrofit2.HttpException import java.io.IOException import java.util.concurrent.Executors +import kotlin.math.abs class PlayerFragment : BaseFragment() { diff --git a/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt b/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt index 4b233d57d..12c2a9381 100644 --- a/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt @@ -6,7 +6,6 @@ import android.os.Bundle import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts -import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.preference.ListPreference @@ -142,11 +141,11 @@ class InstanceSettings : MaterialPreferenceFragment() { importSubscriptions?.setOnPreferenceClickListener { // check StorageAccess val accessGranted = - PermissionHelper.isStoragePermissionGranted(activity as AppCompatActivity) + PermissionHelper.isStoragePermissionGranted(requireActivity()) // import subscriptions if (accessGranted) getContent.launch("*/*") // request permissions if not granted - else PermissionHelper.requestReadWrite(activity as AppCompatActivity) + else PermissionHelper.requestReadWrite(requireActivity()) true } diff --git a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt index 0a70a285e..c22a889e1 100644 --- a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt +++ b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt @@ -9,6 +9,7 @@ import android.os.Build import android.os.Handler import android.os.IBinder import android.os.Looper +import android.widget.Toast import com.fasterxml.jackson.databind.ObjectMapper import com.github.libretube.BACKGROUND_CHANNEL_ID import com.github.libretube.PLAYER_NOTIFICATION_ID @@ -269,6 +270,18 @@ class BackgroundMode : Service() { val segmentEnd = (segment.segment[1] * 1000f).toLong() val currentPosition = player?.currentPosition if (currentPosition in segmentStart until segmentEnd) { + if (PreferenceHelper.getBoolean( + "sb_notifications_key", + true + ) + ) { + try { + Toast.makeText(this, R.string.segment_skipped, Toast.LENGTH_SHORT) + .show() + } catch (e: Exception) { + // Do nothing. + } + } player?.seekTo(segmentEnd) } } diff --git a/app/src/main/java/com/github/libretube/services/UpdateService.kt b/app/src/main/java/com/github/libretube/services/UpdateService.kt index 47d3c3888..5c34cf38b 100644 --- a/app/src/main/java/com/github/libretube/services/UpdateService.kt +++ b/app/src/main/java/com/github/libretube/services/UpdateService.kt @@ -9,6 +9,7 @@ import android.content.IntentFilter import android.net.Uri import android.os.Environment import android.os.IBinder +import android.widget.Toast import com.github.libretube.R import java.io.File @@ -64,7 +65,15 @@ class UpdateService : Service() { Uri.fromFile(file), downloadManager.getMimeTypeForDownloadedFile(downloadId) ) - startActivity(installIntent) + try { + startActivity(installIntent) + } catch (e: Exception) { + Toast.makeText( + context, + R.string.downloadsucceeded, + Toast.LENGTH_SHORT + ).show() + } } } } diff --git a/app/src/main/java/com/github/libretube/util/PermissionHelper.kt b/app/src/main/java/com/github/libretube/util/PermissionHelper.kt index 562423377..3670a2d81 100644 --- a/app/src/main/java/com/github/libretube/util/PermissionHelper.kt +++ b/app/src/main/java/com/github/libretube/util/PermissionHelper.kt @@ -1,14 +1,14 @@ package com.github.libretube.util import android.Manifest +import android.app.Activity import android.content.pm.PackageManager import android.os.Build import android.os.Environment -import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat object PermissionHelper { - fun requestReadWrite(activity: AppCompatActivity): Boolean { + fun requestReadWrite(activity: Activity): Boolean { // request storage permissions if not granted yet if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (!Environment.isExternalStorageManager()) { @@ -46,7 +46,7 @@ object PermissionHelper { return true } - fun isStoragePermissionGranted(activity: AppCompatActivity): Boolean { + fun isStoragePermissionGranted(activity: Activity): Boolean { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED diff --git a/app/src/main/java/com/github/libretube/util/ResettableLazy.kt b/app/src/main/java/com/github/libretube/util/ResettableLazy.kt index 432dff009..129e27de6 100644 --- a/app/src/main/java/com/github/libretube/util/ResettableLazy.kt +++ b/app/src/main/java/com/github/libretube/util/ResettableLazy.kt @@ -1,7 +1,7 @@ package com.github.libretube.util -import kotlin.reflect.KProperty import java.util.* +import kotlin.reflect.KProperty class ResettableLazyManager { // we synchronize to make sure the timing of a reset() call and new inits do not collide diff --git a/app/src/main/java/com/github/libretube/util/ThemeHelper.kt b/app/src/main/java/com/github/libretube/util/ThemeHelper.kt index 4637f57ea..f3e48bba4 100644 --- a/app/src/main/java/com/github/libretube/util/ThemeHelper.kt +++ b/app/src/main/java/com/github/libretube/util/ThemeHelper.kt @@ -100,7 +100,7 @@ object ThemeHelper { fun restartMainActivity(context: Context) { // kill player notification val nManager = context - .getSystemService(AppCompatActivity.NOTIFICATION_SERVICE) as NotificationManager + .getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager nManager.cancelAll() // start a new Intent of the app val pm: PackageManager = context.packageManager diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d6bfb73e3..f89599e88 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -289,7 +289,7 @@ No results. Error Copied - Downloaded + Download succeeded Share with start time Export Subscriptions