From 65ea09854e4ec857964da0194e965b39626c20c7 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Tue, 12 Jan 2021 12:40:21 +0900 Subject: [PATCH] Fixed Bug occuring on Android 11 --- app/build.gradle | 2 +- app/release/output-metadata.json | 2 +- app/src/main/java/xyz/quaver/pupil/Pupil.kt | 3 +- .../pupil/ui/dialog/DefaultQueryDialog.kt | 96 ++++++++++--------- .../dialog/DownloadLocationDialogFragment.kt | 5 +- .../pupil/ui/fragment/SettingsFragment.kt | 4 +- 6 files changed, 60 insertions(+), 52 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 95abdd3a..83536419 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { minSdkVersion 16 targetSdkVersion 30 versionCode 64 - versionName "5.1.7-beta1" + versionName "5.1.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index a03bfc40..6ceb8054 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,7 +11,7 @@ "type": "SINGLE", "filters": [], "versionCode": 64, - "versionName": "5.1.7-beta1", + "versionName": "5.1.7", "outputFile": "app-release.apk" } ] diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt index 0faec406..cf3f35aa 100644 --- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt +++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt @@ -125,8 +125,9 @@ class Pupil : Application() { favoriteTags = SavedSet(File(ContextCompat.getDataDir(this), "favorites_tags.json"), Tag.parse("")) searchHistory = SavedSet(File(ContextCompat.getDataDir(this), "search_histories.json"), "") + /* if (BuildConfig.DEBUG) - FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(false) + FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(false)*/ try { ProviderInstaller.installIfNeeded(this) diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DefaultQueryDialog.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DefaultQueryDialog.kt index cb73f790..c0883922 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DefaultQueryDialog.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DefaultQueryDialog.kt @@ -19,25 +19,29 @@ package xyz.quaver.pupil.ui.dialog import android.app.Dialog -import android.content.Context import android.os.Bundle import android.text.Editable import android.text.TextWatcher import android.widget.ArrayAdapter import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment import xyz.quaver.pupil.R import xyz.quaver.pupil.databinding.DefaultQueryDialogBinding import xyz.quaver.pupil.types.Tags import xyz.quaver.pupil.util.Preferences -class DefaultQueryDialog(context : Context) : AlertDialog(context) { +class DefaultQueryDialog : DialogFragment() { - private val languages = context.resources.getStringArray(R.array.languages).map { - it.split("|").let { split -> - Pair(split[0], split[1]) - } - }.toMap() - private val reverseLanguages = languages.entries.associate { (k, v) -> v to k } + private val languages: Map by lazy { + requireContext().resources.getStringArray(R.array.languages).map { + it.split("|").let { split -> + Pair(split[0], split[1]) + } + }.toMap() + } + private val reverseLanguages: Map by lazy { + languages.entries.associate { (k, v) -> v to k } + } private val excludeBL = "-male:yaoi" private val excludeGuro = listOf("-female:guro", "-male:guro") @@ -45,41 +49,8 @@ class DefaultQueryDialog(context : Context) : AlertDialog(context) { var onPositiveButtonClickListener : ((Tags) -> (Unit))? = null - private lateinit var binding: DefaultQueryDialogBinding - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - setTitle(R.string.default_query_dialog_title) - binding = DefaultQueryDialogBinding.inflate(layoutInflater) - setView(binding.root) - - initView() - - setButton(Dialog.BUTTON_POSITIVE, context.getString(android.R.string.ok)) { _, _ -> - val newTags = Tags.parse(binding.edittext.text.toString()) - - with(binding.languageSelector) { - if (selectedItemPosition != 0) - newTags.add("language:${reverseLanguages[selectedItem]}") - } - - if (binding.BLCheckbox.isChecked) - newTags.add(excludeBL) - - if (binding.guroCheckbox.isChecked) - excludeGuro.forEach { tag -> - newTags.add(tag) - } - - if (binding.loliCheckbox.isChecked) - excludeLoli.forEach { tag -> - newTags.add(tag) - } - - onPositiveButtonClickListener?.invoke(newTags) - } - } + private var _binding: DefaultQueryDialogBinding? = null + private val binding get() = _binding!! private fun initView() { val tags = Tags.parse( @@ -158,4 +129,43 @@ class DefaultQueryDialog(context : Context) : AlertDialog(context) { } } + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + _binding = DefaultQueryDialogBinding.inflate(layoutInflater) + + initView() + + return AlertDialog.Builder(requireContext()).apply { + setTitle(R.string.default_query_dialog_title) + setView(binding.root) + setPositiveButton(android.R.string.ok) { _, _ -> + val newTags = Tags.parse(binding.edittext.text.toString()) + + with(binding.languageSelector) { + if (selectedItemPosition != 0) + newTags.add("language:${reverseLanguages[selectedItem]}") + } + + if (binding.BLCheckbox.isChecked) + newTags.add(excludeBL) + + if (binding.guroCheckbox.isChecked) + excludeGuro.forEach { tag -> + newTags.add(tag) + } + + if (binding.loliCheckbox.isChecked) + excludeLoli.forEach { tag -> + newTags.add(tag) + } + + onPositiveButtonClickListener?.invoke(newTags) + } + }.create() + } + + override fun onDestroy() { + super.onDestroy() + _binding = null + } + } \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt index e9b83ef2..7e61be12 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt @@ -51,14 +51,11 @@ class DownloadLocationDialogFragment : DialogFragment() { private val requestDownloadFolderLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { if (it.resultCode == Activity.RESULT_OK) { - val activity = activity ?: return@registerForActivityResult val context = context ?: return@registerForActivityResult val dialog = dialog ?: return@registerForActivityResult it.data?.data?.also { uri -> - val takeFlags: Int = - activity.intent.flags and - (Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) + val takeFlags: Int = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) context.contentResolver.takePersistableUriPermission(uri, takeFlags) diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt index 29d4f625..bef1ec55 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt @@ -85,12 +85,12 @@ class SettingsFragment : DownloadLocationDialogFragment().show(parentFragmentManager, "Download Location Dialog") } "default_query" -> { - DefaultQueryDialog(requireContext()).apply { + DefaultQueryDialog().apply { onPositiveButtonClickListener = { newTags -> Preferences["default_query"] = newTags.toString() summary = newTags.toString() } - }.show() + }.show(parentFragmentManager, "Default Query Dialog") } "app_lock" -> { val intent = Intent(requireContext(), LockActivity::class.java).apply {