feat: 增加权限管理和文件选择功能

This commit is contained in:
xiaoyan 2023-03-24 16:23:32 +08:00
parent 068721ed4f
commit 0b5fe7468b
5 changed files with 67 additions and 8 deletions

View File

@ -48,6 +48,10 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
//
implementation 'com.github.getActivity:XXPermissions:16.5'
// https://github.com/getActivity/XXPermissions
implementation 'com.github.getActivity:XXPermissions:16.8'
// https://github.com/K1rakishou/Fuck-Storage-Access-Framework
implementation 'com.github.K1rakishou:Fuck-Storage-Access-Framework:v1.1.3'
// Android工具类库 https://blankj.com/2016/07/31/android-utils-code/
implementation 'com.blankj:utilcodex:1.30.1'
}

View File

@ -10,7 +10,7 @@
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.OMQualityInspection"
tools:targetApi="31">
android:requestLegacyExternalStorage="true">
<activity
android:name=".ui.MainActivity"
android:exported="true"

View File

@ -0,0 +1,8 @@
package com.navinfo.omqs.data.process
/**
* 数据处理引擎数据导入导出及转换处理
* */
class DataEngine {
}

View File

@ -1,6 +1,9 @@
package com.navinfo.omqs.ui
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.FileUtils
import com.google.android.material.snackbar.Snackbar
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowCompat
@ -10,13 +13,26 @@ import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.core.net.toFile
import androidx.lifecycle.LifecycleOwner
import com.blankj.utilcode.util.UriUtils
import com.github.k1rakishou.fsaf.FileChooser
import com.github.k1rakishou.fsaf.FileManager
import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks
import com.github.k1rakishou.fsaf.callback.FileChooserCallback
import com.hjq.permissions.OnPermissionCallback
import com.hjq.permissions.Permission
import com.hjq.permissions.XXPermissions
import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.ActivityMainBinding
import java.io.File
class MainActivity : AppCompatActivity() {
class MainActivity : PermissionsActivity(), FSAFActivityCallbacks {
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var binding: ActivityMainBinding
private val fileChooser by lazy { FileChooser(this@MainActivity) }
override fun onCreate(savedInstanceState: Bundle?) {
WindowCompat.setDecorFitsSystemWindows(window, false)
@ -31,13 +47,31 @@ class MainActivity : AppCompatActivity() {
appBarConfiguration = AppBarConfiguration(navController.graph)
setupActionBarWithNavController(navController, appBarConfiguration)
fileChooser.setCallbacks(this@MainActivity)
binding.fab.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAnchorView(R.id.fab)
.setAction("Action", null).show()
// 开始数据导入功能
fileChooser.openChooseFileDialog(object: FileChooserCallback() {
override fun onCancel(reason: String) {
}
override fun onResult(uri: Uri) {
val file = UriUtils.uri2File(uri)
Snackbar.make(view, "文件大小为:${file.length()}", Snackbar.LENGTH_LONG)
.show()
}
})
}
}
override fun onPermissionsGranted() {
}
override fun onPermissionsDenied() {
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.menu_main, menu)
@ -59,4 +93,13 @@ class MainActivity : AppCompatActivity() {
return navController.navigateUp(appBarConfiguration)
|| super.onSupportNavigateUp()
}
override fun fsafStartActivityForResult(intent: Intent, requestCode: Int) {
startActivityForResult(intent, requestCode)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
fileChooser.onActivityResult(requestCode, resultCode, data)
}
}

View File

@ -12,13 +12,17 @@ import com.hjq.permissions.XXPermissions
* 权限申请Activity
*/
abstract class PermissionsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
XXPermissions.with(this)
// 申请单个权限
.permission(Permission.WRITE_EXTERNAL_STORAGE)
.permission(Permission.READ_EXTERNAL_STORAGE)
// .permission(Permission.WRITE_EXTERNAL_STORAGE)
// .permission(Permission.READ_EXTERNAL_STORAGE)
// .permission(Permission.READ_MEDIA_IMAGES)
// .permission(Permission.READ_MEDIA_AUDIO)
// .permission(Permission.READ_MEDIA_VIDEO)
.permission(Permission.MANAGE_EXTERNAL_STORAGE)
// 设置权限请求拦截器(局部设置)
//.interceptor(new PermissionInterceptor())
// 设置不触发错误检测机制(局部设置)