mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 07:50:31 +05:30
fix crash
This commit is contained in:
parent
1cb0c8f7b5
commit
a39b03e778
@ -7,7 +7,6 @@ import android.util.Log
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.core.view.size
|
import androidx.core.view.size
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
@ -38,7 +37,7 @@ class DownloadDialog : DialogFragment() {
|
|||||||
|
|
||||||
fetchAvailableSources()
|
fetchAvailableSources()
|
||||||
|
|
||||||
PermissionHelper.requestReadWrite(activity as AppCompatActivity)
|
PermissionHelper.requestReadWrite(requireActivity())
|
||||||
|
|
||||||
binding.title.text = ThemeHelper.getStyledAppName(requireContext())
|
binding.title.text = ThemeHelper.getStyledAppName(requireContext())
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import android.net.Uri
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.services.UpdateService
|
import com.github.libretube.services.UpdateService
|
||||||
@ -28,7 +27,7 @@ class UpdateDialog(
|
|||||||
val downloadUrl = getDownloadUrl(updateInfo)
|
val downloadUrl = getDownloadUrl(updateInfo)
|
||||||
Log.i("downloadUrl", downloadUrl.toString())
|
Log.i("downloadUrl", downloadUrl.toString())
|
||||||
if (downloadUrl != null) {
|
if (downloadUrl != null) {
|
||||||
PermissionHelper.requestReadWrite(activity as AppCompatActivity)
|
PermissionHelper.requestReadWrite(requireActivity())
|
||||||
val intent = Intent(context, UpdateService::class.java)
|
val intent = Intent(context, UpdateService::class.java)
|
||||||
intent.putExtra("downloadUrl", downloadUrl)
|
intent.putExtra("downloadUrl", downloadUrl)
|
||||||
context?.startService(intent)
|
context?.startService(intent)
|
||||||
|
@ -88,7 +88,6 @@ import com.google.android.exoplayer2.upstream.DefaultHttpDataSource
|
|||||||
import com.google.android.exoplayer2.util.RepeatModeUtil
|
import com.google.android.exoplayer2.util.RepeatModeUtil
|
||||||
import com.google.android.exoplayer2.video.VideoSize
|
import com.google.android.exoplayer2.video.VideoSize
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import kotlin.math.abs
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -96,6 +95,7 @@ import org.chromium.net.CronetEngine
|
|||||||
import retrofit2.HttpException
|
import retrofit2.HttpException
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
|
import kotlin.math.abs
|
||||||
|
|
||||||
class PlayerFragment : BaseFragment() {
|
class PlayerFragment : BaseFragment() {
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import android.os.Bundle
|
|||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.preference.ListPreference
|
import androidx.preference.ListPreference
|
||||||
@ -142,11 +141,11 @@ class InstanceSettings : MaterialPreferenceFragment() {
|
|||||||
importSubscriptions?.setOnPreferenceClickListener {
|
importSubscriptions?.setOnPreferenceClickListener {
|
||||||
// check StorageAccess
|
// check StorageAccess
|
||||||
val accessGranted =
|
val accessGranted =
|
||||||
PermissionHelper.isStoragePermissionGranted(activity as AppCompatActivity)
|
PermissionHelper.isStoragePermissionGranted(requireActivity())
|
||||||
// import subscriptions
|
// import subscriptions
|
||||||
if (accessGranted) getContent.launch("*/*")
|
if (accessGranted) getContent.launch("*/*")
|
||||||
// request permissions if not granted
|
// request permissions if not granted
|
||||||
else PermissionHelper.requestReadWrite(activity as AppCompatActivity)
|
else PermissionHelper.requestReadWrite(requireActivity())
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import android.os.Build
|
|||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
|
import android.widget.Toast
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper
|
import com.fasterxml.jackson.databind.ObjectMapper
|
||||||
import com.github.libretube.BACKGROUND_CHANNEL_ID
|
import com.github.libretube.BACKGROUND_CHANNEL_ID
|
||||||
import com.github.libretube.PLAYER_NOTIFICATION_ID
|
import com.github.libretube.PLAYER_NOTIFICATION_ID
|
||||||
@ -269,6 +270,18 @@ class BackgroundMode : Service() {
|
|||||||
val segmentEnd = (segment.segment[1] * 1000f).toLong()
|
val segmentEnd = (segment.segment[1] * 1000f).toLong()
|
||||||
val currentPosition = player?.currentPosition
|
val currentPosition = player?.currentPosition
|
||||||
if (currentPosition in segmentStart until segmentEnd) {
|
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)
|
player?.seekTo(segmentEnd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import android.content.IntentFilter
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Environment
|
import android.os.Environment
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
|
import android.widget.Toast
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@ -64,7 +65,15 @@ class UpdateService : Service() {
|
|||||||
Uri.fromFile(file),
|
Uri.fromFile(file),
|
||||||
downloadManager.getMimeTypeForDownloadedFile(downloadId)
|
downloadManager.getMimeTypeForDownloadedFile(downloadId)
|
||||||
)
|
)
|
||||||
startActivity(installIntent)
|
try {
|
||||||
|
startActivity(installIntent)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Toast.makeText(
|
||||||
|
context,
|
||||||
|
R.string.downloadsucceeded,
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package com.github.libretube.util
|
package com.github.libretube.util
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
|
import android.app.Activity
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Environment
|
import android.os.Environment
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
|
|
||||||
object PermissionHelper {
|
object PermissionHelper {
|
||||||
fun requestReadWrite(activity: AppCompatActivity): Boolean {
|
fun requestReadWrite(activity: Activity): Boolean {
|
||||||
// request storage permissions if not granted yet
|
// request storage permissions if not granted yet
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
if (!Environment.isExternalStorageManager()) {
|
if (!Environment.isExternalStorageManager()) {
|
||||||
@ -46,7 +46,7 @@ object PermissionHelper {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isStoragePermissionGranted(activity: AppCompatActivity): Boolean {
|
fun isStoragePermissionGranted(activity: Activity): Boolean {
|
||||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||||
== PackageManager.PERMISSION_GRANTED
|
== PackageManager.PERMISSION_GRANTED
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.github.libretube.util
|
package com.github.libretube.util
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
class ResettableLazyManager {
|
class ResettableLazyManager {
|
||||||
// we synchronize to make sure the timing of a reset() call and new inits do not collide
|
// we synchronize to make sure the timing of a reset() call and new inits do not collide
|
||||||
|
@ -100,7 +100,7 @@ object ThemeHelper {
|
|||||||
fun restartMainActivity(context: Context) {
|
fun restartMainActivity(context: Context) {
|
||||||
// kill player notification
|
// kill player notification
|
||||||
val nManager = context
|
val nManager = context
|
||||||
.getSystemService(AppCompatActivity.NOTIFICATION_SERVICE) as NotificationManager
|
.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
nManager.cancelAll()
|
nManager.cancelAll()
|
||||||
// start a new Intent of the app
|
// start a new Intent of the app
|
||||||
val pm: PackageManager = context.packageManager
|
val pm: PackageManager = context.packageManager
|
||||||
|
@ -289,7 +289,7 @@
|
|||||||
<string name="no_search_result">No results.</string>
|
<string name="no_search_result">No results.</string>
|
||||||
<string name="error_occurred">Error</string>
|
<string name="error_occurred">Error</string>
|
||||||
<string name="copied">Copied</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="share_with_time">Share with start time</string>
|
||||||
<string name="export_subscriptions">Export Subscriptions</string>
|
<string name="export_subscriptions">Export Subscriptions</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user