fix crash

This commit is contained in:
Bnyro 2022-08-08 12:01:25 +02:00
parent 1cb0c8f7b5
commit a39b03e778
10 changed files with 34 additions and 15 deletions

View File

@ -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())

View File

@ -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)

View File

@ -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() {

View File

@ -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
}

View File

@ -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)
}
}

View File

@ -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()
}
}
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -289,7 +289,7 @@
<string name="no_search_result">No results.</string>
<string name="error_occurred">Error</string>
<string name="copied">Copied</string>
<string name="downloadsucceeded">Downloaded</string>
<string name="downloadsucceeded">Download succeeded</string>
<string name="share_with_time">Share with start time</string>
<string name="export_subscriptions">Export Subscriptions</string>
</resources>