fix sub import

This commit is contained in:
Bnyro 2022-07-21 16:59:06 +02:00
parent 00c1259c11
commit cd43515277
3 changed files with 40 additions and 60 deletions

View File

@ -1,18 +1,15 @@
package com.github.libretube.preferences
import android.Manifest
import android.content.ContentResolver
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.preference.ListPreference
@ -26,6 +23,7 @@ import com.github.libretube.dialogs.DeleteAccountDialog
import com.github.libretube.dialogs.LoginDialog
import com.github.libretube.dialogs.LogoutDialog
import com.github.libretube.dialogs.RequireRestartDialog
import com.github.libretube.util.PermissionHelper
import com.github.libretube.util.RetrofitInstance
import org.json.JSONObject
import org.json.JSONTokener
@ -38,8 +36,12 @@ import java.util.zip.ZipInputStream
class InstanceSettings : PreferenceFragmentCompat() {
val TAG = "InstanceSettings"
companion object {
lateinit var getContent: ActivityResultLauncher<String>
}
override fun onCreate(savedInstanceState: Bundle?) {
MainSettings.getContent =
getContent =
registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? ->
if (uri != null) {
try {
@ -288,52 +290,14 @@ class InstanceSettings : PreferenceFragmentCompat() {
private fun importSubscriptions() {
val token = PreferenceHelper.getToken()
if (token != "") {
// check StorageAccess
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
Log.d("myz", "" + Build.VERSION.SDK_INT)
if (ContextCompat.checkSelfPermission(
this.requireContext(),
Manifest.permission.READ_EXTERNAL_STORAGE
)
!= PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this.requireActivity(),
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.MANAGE_EXTERNAL_STORAGE
),
1
) // permission request code is just an int
} else if (token != "") {
MainSettings.getContent.launch("*/*")
val accessGranted = PermissionHelper.isStoragePermissionGranted(activity as AppCompatActivity)
if (accessGranted) getContent.launch("*/*")
else PermissionHelper.requestReadWrite(activity as AppCompatActivity)
} else {
Toast.makeText(context, R.string.login_first, Toast.LENGTH_SHORT).show()
}
} else {
if (ActivityCompat.checkSelfPermission(
requireContext(),
Manifest.permission.READ_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED ||
ActivityCompat.checkSelfPermission(
requireContext(),
Manifest.permission.WRITE_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this.requireActivity(),
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
),
1
)
} else if (token != "") {
MainSettings.getContent.launch("*/*")
} else {
Toast.makeText(context, R.string.login_first, Toast.LENGTH_SHORT).show()
}
}
}
private fun subscribe(channels: List<String>) {

View File

@ -2,7 +2,6 @@ package com.github.libretube.preferences
import android.os.Bundle
import android.util.Log
import androidx.activity.result.ActivityResultLauncher
import androidx.fragment.app.Fragment
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
@ -19,10 +18,6 @@ import kotlinx.coroutines.launch
class MainSettings : PreferenceFragmentCompat() {
val TAG = "SettingsFragment"
companion object {
lateinit var getContent: ActivityResultLauncher<String>
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings, rootKey)

View File

@ -4,15 +4,13 @@ import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import android.os.Environment
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
object PermissionHelper {
fun requestReadWrite(activity: AppCompatActivity) {
fun requestReadWrite(activity: AppCompatActivity): Boolean {
// request storage permissions if not granted yet
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
Log.d("myz", "" + Build.VERSION.SDK_INT)
if (!Environment.isExternalStorageManager()) {
ActivityCompat.requestPermissions(
activity,
@ -22,6 +20,7 @@ object PermissionHelper {
),
1
) // permission request code is just an int
return false
}
} else {
if (ActivityCompat.checkSelfPermission(
@ -41,7 +40,29 @@ object PermissionHelper {
),
1
)
}
return false
}
}
return true
}
fun isStoragePermissionGranted(activity: AppCompatActivity): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED
) {
true
} else {
ActivityCompat.requestPermissions(
activity,
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
1
)
false
}
} else {
// permission is automatically granted on sdk < 23 upon installation
true
}
}
}