feat: 增加权限管理和文件选择功能
This commit is contained in:
@@ -48,6 +48,10 @@ dependencies {
|
|||||||
testImplementation 'junit:junit:4.13.2'
|
testImplementation 'junit:junit:4.13.2'
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
|
||||||
//权限管理
|
//权限管理 https://github.com/getActivity/XXPermissions
|
||||||
implementation 'com.github.getActivity:XXPermissions:16.5'
|
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'
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.OMQualityInspection"
|
android:theme="@style/Theme.OMQualityInspection"
|
||||||
tools:targetApi="31">
|
android:requestLegacyExternalStorage="true">
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.MainActivity"
|
android:name=".ui.MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.navinfo.omqs.data.process
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据处理引擎,数据导入、导出及转换处理
|
||||||
|
* */
|
||||||
|
class DataEngine {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
package com.navinfo.omqs.ui
|
package com.navinfo.omqs.ui
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.FileUtils
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.WindowCompat
|
import androidx.core.view.WindowCompat
|
||||||
@@ -10,13 +13,26 @@ import androidx.navigation.ui.navigateUp
|
|||||||
import androidx.navigation.ui.setupActionBarWithNavController
|
import androidx.navigation.ui.setupActionBarWithNavController
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
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.R
|
||||||
import com.navinfo.omqs.databinding.ActivityMainBinding
|
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 appBarConfiguration: AppBarConfiguration
|
||||||
private lateinit var binding: ActivityMainBinding
|
private lateinit var binding: ActivityMainBinding
|
||||||
|
private val fileChooser by lazy { FileChooser(this@MainActivity) }
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||||
@@ -31,13 +47,31 @@ class MainActivity : AppCompatActivity() {
|
|||||||
appBarConfiguration = AppBarConfiguration(navController.graph)
|
appBarConfiguration = AppBarConfiguration(navController.graph)
|
||||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||||
|
|
||||||
|
fileChooser.setCallbacks(this@MainActivity)
|
||||||
binding.fab.setOnClickListener { view ->
|
binding.fab.setOnClickListener { view ->
|
||||||
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
|
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
|
||||||
.setAnchorView(R.id.fab)
|
.setAnchorView(R.id.fab)
|
||||||
.setAction("Action", null).show()
|
.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 {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
// Inflate the menu; this adds items to the action bar if it is present.
|
// Inflate the menu; this adds items to the action bar if it is present.
|
||||||
menuInflater.inflate(R.menu.menu_main, menu)
|
menuInflater.inflate(R.menu.menu_main, menu)
|
||||||
@@ -59,4 +93,13 @@ class MainActivity : AppCompatActivity() {
|
|||||||
return navController.navigateUp(appBarConfiguration)
|
return navController.navigateUp(appBarConfiguration)
|
||||||
|| super.onSupportNavigateUp()
|
|| 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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -12,13 +12,17 @@ import com.hjq.permissions.XXPermissions
|
|||||||
* 权限申请Activity
|
* 权限申请Activity
|
||||||
*/
|
*/
|
||||||
abstract class PermissionsActivity : AppCompatActivity() {
|
abstract class PermissionsActivity : AppCompatActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState, persistentState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
XXPermissions.with(this)
|
XXPermissions.with(this)
|
||||||
// 申请单个权限
|
// 申请单个权限
|
||||||
.permission(Permission.WRITE_EXTERNAL_STORAGE)
|
// .permission(Permission.WRITE_EXTERNAL_STORAGE)
|
||||||
.permission(Permission.READ_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())
|
//.interceptor(new PermissionInterceptor())
|
||||||
// 设置不触发错误检测机制(局部设置)
|
// 设置不触发错误检测机制(局部设置)
|
||||||
|
|||||||
Reference in New Issue
Block a user