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

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

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())
// 设置不触发错误检测机制(局部设置)