修复高版本权限问题。

This commit is contained in:
Cold-Mint 2025-02-07 23:47:03 +08:00
parent 91eabce8cb
commit 3c913282c0
Signed by: Cold-Mint
GPG Key ID: C5A9BF8A98E0CE99
9 changed files with 27 additions and 132 deletions

View File

@ -104,8 +104,8 @@ dependencies {
implementation 'me.zhanghai.android.fastscroll:library:1.1.8' implementation 'me.zhanghai.android.fastscroll:library:1.1.8'
// https://github.com/getActivity/MultiLanguages // https://github.com/getActivity/MultiLanguages
implementation 'com.github.getActivity:MultiLanguages:8.0' implementation 'com.github.getActivity:MultiLanguages:8.0'
// // https://github.com/getActivity/XXPermissions
implementation 'com.guolindev.permissionx:permissionx:1.7.1' implementation 'com.github.getActivity:XXPermissions:20.0'
implementation "androidx.room:room-runtime:2.4.0" implementation "androidx.room:room-runtime:2.4.0"
//Room //Room

View File

@ -30,21 +30,12 @@
android:name=".FeedbackActivity" android:name=".FeedbackActivity"
android:exported="false" android:exported="false"
tools:ignore="LockedOrientationActivity" /> tools:ignore="LockedOrientationActivity" />
<activity
android:name=".ChangePasswordActivity"
android:exported="false"
tools:ignore="LockedOrientationActivity" />
<activity <activity
android:name=".NetworkTemplatePackageDetailsActivity" android:name=".NetworkTemplatePackageDetailsActivity"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".CustomizeEditTextActivity" android:name=".CustomizeEditTextActivity"
android:exported="false" /> android:exported="false" />
<!-- 模组界面-->
<activity android:name=".fragments.WarehouseFragment" />
<activity
android:name=".SearchActivity"
android:exported="false" />
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"

View File

@ -53,7 +53,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private val headLayout by lazy { private val headLayout by lazy {
HeadLayoutBinding.inflate(layoutInflater) HeadLayoutBinding.inflate(layoutInflater)
} }
val startViewModel by lazy { private val startViewModel by lazy {
ViewModelProvider(this)[StartViewModel::class.java] ViewModelProvider(this)[StartViewModel::class.java]
} }
@ -67,7 +67,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
*/ */
private fun initNav() { private fun initNav() {
appBarConfiguration = AppBarConfiguration( appBarConfiguration = AppBarConfiguration(
setOf(R.id.community_item, R.id.mod_item, R.id.database_item, R.id.template_item), setOf(R.id.mod_item, R.id.database_item, R.id.template_item),
viewBinding.drawerlayout viewBinding.drawerlayout
) )
val navController = findNavController(R.id.baseFragment) val navController = findNavController(R.id.baseFragment)
@ -238,21 +238,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
val dataBase = menu.findItem(R.id.database_item) val dataBase = menu.findItem(R.id.database_item)
val template = menu.findItem(R.id.template_item) val template = menu.findItem(R.id.template_item)
val codeTable = menu.findItem(R.id.code_table) val codeTable = menu.findItem(R.id.code_table)
// val mod = menu.findItem(R.id.mod_item)
val community = menu.findItem(R.id.community_item)
// val group = menu.findItem(R.id.user_group)
// group.setOnMenuItemClickListener {
// viewBinding.drawerlayout.closeDrawer((GravityCompat.START))
// val userGroupFragment = UserGroupFragment()
// userGroupFragment.show(supportFragmentManager, "userGroup")
// false
// }
val gitHub = menu.findItem(R.id.github) val gitHub = menu.findItem(R.id.github)
gitHub.setOnMenuItemClickListener { gitHub.setOnMenuItemClickListener {
AppOperator.useBrowserAccessWebPage(this, "https://github.com/Cold-Mint/RustAssistant") AppOperator.useBrowserAccessWebPage(this, "https://github.com/Cold-Mint/RustAssistant")
false false
} }
// val help = menu.findItem(R.id.help)
//管理可见性 //管理可见性
dataBase.isVisible = isActive dataBase.isVisible = isActive
template.isVisible = isActive template.isVisible = isActive
@ -345,9 +335,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
} }
false false
}*/ }*/
community.setOnMenuItemClickListener {
false
}
menu.findItem(R.id.startGame).setOnMenuItemClickListener { menu.findItem(R.id.startGame).setOnMenuItemClickListener {
val packName = AppSettings.getValue( val packName = AppSettings.getValue(
AppSettings.Setting.GamePackage, AppSettings.Setting.GamePackage,
@ -589,6 +576,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
@Deprecated("Deprecated in Java") @Deprecated("Deprecated in Java")
override fun onBackPressed() { override fun onBackPressed() {
super.onBackPressed()
val navController = findNavController(R.id.baseFragment) val navController = findNavController(R.id.baseFragment)
//判断是否在第一个导航 社区或者仓库 //判断是否在第一个导航 社区或者仓库
if (navController.currentDestination?.id == navController.graph.startDestinationId) { if (navController.currentDestination?.id == navController.graph.startDestinationId) {
@ -615,17 +603,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
* 观察启动视图 * 观察启动视图
*/ */
private fun observeStartViewModel() { private fun observeStartViewModel() {
startViewModel.userLiveData.observe(this) {
headLayout.nameView.text = it.data.userName
headLayout.emailView.text = it.data.email
val headIcon = it.data.headIcon
if (headIcon != null) {
Glide.with(this).load(ServerConfiguration.getRealLink(headIcon))
.apply(GlobalMethod.getRequestOptions(true, !it.data.activation))
.into(headLayout.imageView)
}
}
startViewModel.dataSetMsgLiveData.observe(this) { startViewModel.dataSetMsgLiveData.observe(this) {
if (it.isNotBlank()) { if (it.isNotBlank()) {
Snackbar.make(viewBinding.root, it, Snackbar.LENGTH_SHORT).show() Snackbar.make(viewBinding.root, it, Snackbar.LENGTH_SHORT).show()
@ -657,7 +634,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
AppSettings.Setting.DynamicColor, AppSettings.Setting.DynamicColor,
DynamicColors.isDynamicColorAvailable() DynamicColors.isDynamicColorAvailable()
) )
// useToolbarSetSupportActionBar()
initNav() initNav()
observeStartViewModel() observeStartViewModel()
//偏移fab //偏移fab

View File

@ -2,16 +2,19 @@ package com.coldmint.rust.pro.fragments
import android.Manifest import android.Manifest
import android.content.Intent import android.content.Intent
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.annotation.RequiresApi
import com.coldmint.rust.pro.CreationWizardActivity import com.coldmint.rust.pro.CreationWizardActivity
import com.coldmint.rust.pro.MainActivity
import com.coldmint.rust.pro.R import com.coldmint.rust.pro.R
import com.coldmint.rust.pro.adapters.WarehouseAdapter import com.coldmint.rust.pro.adapters.WarehouseAdapter
import com.coldmint.rust.pro.base.BaseFragment import com.coldmint.rust.pro.base.BaseFragment
import com.coldmint.rust.pro.databinding.FragmentWarehouseBinding import com.coldmint.rust.pro.databinding.FragmentWarehouseBinding
import com.coldmint.rust.pro.tool.GlobalMethod
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.permissionx.guolindev.PermissionX import com.hjq.permissions.OnPermissionCallback
import com.hjq.permissions.XXPermissions
/** /**
@ -19,20 +22,12 @@ import com.permissionx.guolindev.PermissionX
* @date 2022/1/5 10:18 * @date 2022/1/5 10:18
*/ */
class WarehouseFragment : BaseFragment<FragmentWarehouseBinding>() { class WarehouseFragment : BaseFragment<FragmentWarehouseBinding>() {
@RequiresApi(Build.VERSION_CODES.R)
private fun loadTab() { private fun loadTab() {
// 在需要申请权限的地方调用如下方法 // 在需要申请权限的地方调用如下方法
PermissionX.init(this) GlobalMethod.requestStoragePermissions(requireActivity()) {
.permissions(Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE) }
.onExplainRequestReason { scope, deniedList ->
scope.showRequestReasonDialog(deniedList, "核心基础是基于这些权限", "授权", "取消")
}
.onForwardToSettings { scope, deniedList ->
scope.showForwardToSettingsDialog(deniedList, "您需要手动允许设置中的必要权限", "授权", "取消")
}.request { allGranted, _, _ ->
if (allGranted) {
}
}
if (isAdded) { if (isAdded) {
TabLayoutMediator(viewBinding.tabLayout, viewBinding.pager) { tab, position -> TabLayoutMediator(viewBinding.tabLayout, viewBinding.pager) { tab, position ->
when (position) { when (position) {

View File

@ -31,7 +31,8 @@ import com.flask.colorpicker.ColorPickerView
import com.flask.colorpicker.builder.ColorPickerDialogBuilder import com.flask.colorpicker.builder.ColorPickerDialogBuilder
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import com.permissionx.guolindev.PermissionX import com.hjq.permissions.OnPermissionCallback
import com.hjq.permissions.XXPermissions
import jp.wasabeef.glide.transformations.BitmapTransformation import jp.wasabeef.glide.transformations.BitmapTransformation
import jp.wasabeef.glide.transformations.CropCircleTransformation import jp.wasabeef.glide.transformations.CropCircleTransformation
import jp.wasabeef.glide.transformations.GrayscaleTransformation import jp.wasabeef.glide.transformations.GrayscaleTransformation
@ -285,26 +286,11 @@ object GlobalMethod {
Manifest.permission.WRITE_EXTERNAL_STORAGE Manifest.permission.WRITE_EXTERNAL_STORAGE
) )
} }
PermissionX.init(activity).permissions( XXPermissions.with(activity).permission(
list list
).onForwardToSettings { scope, deniedList -> ).request { _, allGranted ->
scope.showForwardToSettingsDialog( requestCompleted.invoke(allGranted)
deniedList,
activity.getString(R.string.dialog_title),
activity.getString(R.string.dialog_confirm)
)
} }
.onExplainRequestReason { scope, deniedList ->
scope.showRequestReasonDialog(
deniedList,
activity.getString(R.string.dialog_title),
activity.getString(R.string.dialog_confirm),
activity.getString(R.string.dialog_cancel)
)
}
.request { allGranted, grantedList, deniedList ->
requestCompleted.invoke(allGranted)
}
} }

View File

@ -44,20 +44,6 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
MutableLiveData(false) MutableLiveData(false)
} }
/**
* 用户数据的LiveData
*/
val userLiveData by lazy {
MutableLiveData<ActivationInfo>()
}
/**
* 是否需要登录的LiveData
*/
val needLoginLiveData by lazy {
MutableLiveData<Boolean>(false)
}
/** /**
* 表示此应用是否已激活 * 表示此应用是否已激活
*/ */
@ -66,13 +52,6 @@ class StartViewModel(application: Application) : BaseAndroidViewModel(applicatio
} }
/**
* 用户信息验证错误LiveData
*/
val verifyErrorMsgLiveData by lazy {
MutableLiveData("")
}
/** /**
* 数据集消息 * 数据集消息
*/ */

View File

@ -1,13 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="207.22656dp"
android:height="200dp"
android:viewportWidth="1061"
android:viewportHeight="1024"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="#FF000000"
android:pathData="M712.81,420.37l-54.83,0c0,70.66 -57.28,127.94 -127.93,127.94s-127.95,-57.28 -127.95,-127.94l-54.84,0c0,100.94 81.84,182.77 182.78,182.77S712.81,521.31 712.81,420.37z"/>
<path
android:fillColor="#FF000000"
android:pathData="M1060.08,610.66c0,-92.76 -51.85,-173.45 -128.27,-215.09C928.28,176.54 749.91,0 530.04,0c-219.89,0 -398.29,176.58 -401.77,395.65C51.84,437.3 0,517.95 0,610.66c0,113.22 77.38,208.26 182.39,236.42L127.45,1023.52l55.32,0 18.28,-54.83 49.46,-164.87c-1.29,0.02 -2.48,0.38 -3.77,0.38 -105.99,0 -191.91,-85.92 -191.91,-191.91 0,-62.97 30.74,-118.35 77.58,-153.34 20.78,146.46 120.31,267.26 254.42,318.46l-59.17,191.29 0.03,0 -16.99,54.83 54.83,0 18.28,-54.83 78.61,-226.02c-159.41,-31.47 -279.66,-171.93 -279.66,-340.57 0,-191.79 155.48,-347.26 347.27,-347.26s347.26,155.47 347.26,347.26c0,168.64 -120.24,309.1 -279.65,340.57l78.61,226.02 18.27,54.83 54.83,0L732.23,968.69l0.17,0 -59.19,-191.3c134.14,-51.2 233.7,-172.03 254.45,-318.53 46.86,34.99 77.62,90.41 77.62,153.42 0,105.99 -85.84,191.91 -191.74,191.91 -1.3,0 -2.5,-0.36 -3.8,-0.38l49.42,164.88 -0.14,0 18.27,54.83 55.39,0 -54.88,-176.43C982.74,818.94 1060.08,723.9 1060.08,610.66z"/>
</vector>

View File

@ -7,33 +7,19 @@
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:background="?attr/selectableItemBackgroundBorderless" android:layout_width="80dp"
android:clickable="true" android:layout_height="80dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:id="@+id/imageView" android:layout_marginBottom="16dp"
android:layout_width="72dp" android:src="@mipmap/ic_launcher" />
android:layout_height="72dp"
android:layout_marginHorizontal="16dp"
android:src="@drawable/head_icon"
android:focusable="true" />
<TextView <TextView
android:id="@+id/nameView"
style="@style/TextAppearance.Material3.TitleMedium" style="@style/TextAppearance.Material3.TitleMedium"
android:layout_marginStart="16dp"
android:text="@string/app_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"/>
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
android:text="@string/click_profile_picture_login"/>
<TextView
android:id="@+id/emailView"
style="@style/TextAppearance.Material3.BodyMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="8dp"
android:text="" />
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -9,11 +9,6 @@
<group android:checkableBehavior="single"> <group android:checkableBehavior="single">
<item
android:id="@+id/community_item"
android:icon="@drawable/community"
android:title="@string/community" />
<item <item
android:id="@+id/mod_item" android:id="@+id/mod_item"
android:icon="@drawable/mod" android:icon="@drawable/mod"