修复高版本权限问题。
This commit is contained in:
parent
91eabce8cb
commit
3c913282c0
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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("")
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据集消息
|
* 数据集消息
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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>
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user