diff --git a/app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt b/app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt index c36d77547..15e0da163 100644 --- a/app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt @@ -10,8 +10,18 @@ import io.legado.app.data.entities.BookGroup import io.legado.app.databinding.DialogBookGroupEditBinding import io.legado.app.lib.dialogs.alert import io.legado.app.lib.theme.primaryColor -import io.legado.app.utils.* +import io.legado.app.utils.FileUtils +import io.legado.app.utils.MD5Utils +import io.legado.app.utils.SelectImageContract +import io.legado.app.utils.externalFiles +import io.legado.app.utils.gone +import io.legado.app.utils.inputStream +import io.legado.app.utils.launch +import io.legado.app.utils.readUri +import io.legado.app.utils.setLayout +import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding +import io.legado.app.utils.visible import splitties.init.appCtx import splitties.views.onClick import java.io.FileOutputStream @@ -28,7 +38,6 @@ class GroupEditDialog() : BaseDialogFragment(R.layout.dialog_book_group_edit) { private val viewModel by viewModels() private var bookGroup: BookGroup? = null private val selectImage = registerForActivityResult(SelectImageContract()) { - it ?: return@registerForActivityResult it.uri ?: return@registerForActivityResult readUri(it.uri) { fileDoc, inputStream -> try { diff --git a/app/src/main/java/io/legado/app/ui/book/import/BaseImportBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/import/BaseImportBookActivity.kt index b7f7f24a7..d7ad54652 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/BaseImportBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/BaseImportBookActivity.kt @@ -78,12 +78,12 @@ abstract class BaseImportBookActivity : VMBaseActivity(), } val privacyPolicy = String(assets.open("privacyPolicy.md").readBytes()) alert(getString(R.string.privacy_policy), privacyPolicy) { - noButton { - finish() - block.resume(false) - } positiveButton(R.string.agree) { LocalConfig.privacyPolicyOk = true block.resume(true) diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt index a1eac920a..92e86a0e3 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt @@ -157,7 +157,7 @@ abstract class BaseBookshelfFragment(layoutId: Int) : VMBaseFragment(), ScanResultC override val binding by viewBinding(ActivityQrcodeCaptureBinding::inflate) private val selectQrImage = registerForActivityResult(SelectImageContract()) { - it?.uri?.readBytes(this)?.let { bytes -> + it.uri?.readBytes(this)?.let { bytes -> val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size) onScanResultCallback(QRCodeUtils.parseCodeResult(bitmap)) } diff --git a/app/src/main/java/io/legado/app/ui/replace/GroupManageDialog.kt b/app/src/main/java/io/legado/app/ui/replace/GroupManageDialog.kt index 85cc90b3f..4b7a0831f 100644 --- a/app/src/main/java/io/legado/app/ui/replace/GroupManageDialog.kt +++ b/app/src/main/java/io/legado/app/ui/replace/GroupManageDialog.kt @@ -81,14 +81,14 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view), editView.setHint(R.string.group_name) } customView { alertBinding.root } - yesButton { + okButton { alertBinding.editView.text?.toString()?.let { if (it.isNotBlank()) { viewModel.addGroup(it) } } } - noButton() + cancelButton() }.requestInputMethod() } @@ -100,10 +100,10 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view), editView.setText(group) } customView { alertBinding.root } - yesButton { + okButton { viewModel.upGroup(group, alertBinding.editView.text?.toString()) } - noButton() + cancelButton() }.requestInputMethod() } diff --git a/app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt b/app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt index f0a3b7cce..415481892 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/manage/GroupManageDialog.kt @@ -83,14 +83,14 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view), editView.setHint(R.string.group_name) } customView { alertBinding.root } - yesButton { + okButton { alertBinding.editView.text?.toString()?.let { if (it.isNotBlank()) { viewModel.addGroup(it) } } } - noButton() + cancelButton() }.requestInputMethod() } @@ -102,10 +102,10 @@ class GroupManageDialog : BaseDialogFragment(R.layout.dialog_recycler_view), editView.setText(group) } customView { alertBinding.root } - yesButton { + okButton { viewModel.upGroup(group, alertBinding.editView.text?.toString()) } - noButton() + cancelButton() }.requestInputMethod() } diff --git a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt index 1811f670a..0f68c5620 100644 --- a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt @@ -373,6 +373,8 @@ fun Context.openFileUri(uri: Uri, type: String? = null) { //7.0版本以上 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) } + val uri = if (uri.isContentScheme()) uri + else FileProvider.getUriForFile(this, AppConst.authority, File(uri.path!!)) intent.setDataAndType(uri, type ?: IntentType.from(uri)) try { startActivity(intent) diff --git a/app/src/main/java/io/legado/app/utils/RealPathUtil.kt b/app/src/main/java/io/legado/app/utils/RealPathUtil.kt index 62160d52b..cd0c6430d 100644 --- a/app/src/main/java/io/legado/app/utils/RealPathUtil.kt +++ b/app/src/main/java/io/legado/app/utils/RealPathUtil.kt @@ -54,30 +54,22 @@ object RealPathUtil { "image" -> { contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI } + "video" -> { contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI } + "audio" -> { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI } } val selection = "_id=?" - val selectionArgs = arrayOf( - split[1] - ) + val selectionArgs = arrayOf(split[1]) return getDataColumn(context, contentUri, selection, selectionArgs) } - } else if ("content".equals( - uri.scheme, - ignoreCase = true - ) - ) { // Return the remote address - return if (isGooglePhotosUri(uri)) uri.lastPathSegment else getDataColumn( - context, - uri, - null, - null - ) + } else if ("content".equals(uri.scheme, ignoreCase = true)) { // Return the remote address + return if (isGooglePhotosUri(uri)) uri.lastPathSegment + else getDataColumn(context, uri, null, null) } else if ("file".equals(uri.scheme, ignoreCase = true)) { return uri.path } diff --git a/app/src/main/java/io/legado/app/utils/UriExtensions.kt b/app/src/main/java/io/legado/app/utils/UriExtensions.kt index c232c4fcc..17a760bf6 100644 --- a/app/src/main/java/io/legado/app/utils/UriExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/UriExtensions.kt @@ -47,10 +47,7 @@ fun AppCompatActivity.readUri( } } else { PermissionsCompat.Builder() - .addPermissions( - Permissions.READ_EXTERNAL_STORAGE, - Permissions.WRITE_EXTERNAL_STORAGE - ) + .addPermissions(*Permissions.Group.STORAGE) .rationale(R.string.get_storage_per) .onGranted { RealPathUtil.getPath(this, uri)?.let { path -> @@ -87,10 +84,7 @@ fun Fragment.readUri(uri: Uri?, success: (fileDoc: FileDoc, inputStream: InputSt } } else { PermissionsCompat.Builder() - .addPermissions( - Permissions.READ_EXTERNAL_STORAGE, - Permissions.WRITE_EXTERNAL_STORAGE - ) + .addPermissions(*Permissions.Group.STORAGE) .rationale(R.string.get_storage_per) .onGranted { RealPathUtil.getPath(requireContext(), uri)?.let { path -> @@ -99,7 +93,6 @@ fun Fragment.readUri(uri: Uri?, success: (fileDoc: FileDoc, inputStream: InputSt FileInputStream(file).use { inputStream -> success.invoke(fileDoc, inputStream) } - } } .request()