Runt
2025-10-11 89e35a1933ba40513a96572b27291c0aa65c918c
框架优化
1 files added
2 files modified
130 ■■■■ changed files
libmvi/src/main/java/com/runt/open/mvi/base/BaseActivity.kt 35 ●●●●● patch | view | raw | blame | history
libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt 47 ●●●●● patch | view | raw | blame | history
libmvi/src/main/java/com/runt/open/mvi/utils/FileUtils.kt 48 ●●●●● patch | view | raw | blame | history
libmvi/src/main/java/com/runt/open/mvi/base/BaseActivity.kt
@@ -40,6 +40,7 @@
import com.runt.open.mvi.R
import com.runt.open.mvi.base.model.BaseViewModel
import com.runt.open.mvi.base.model.ViewModelFactory
import com.runt.open.mvi.utils.FileUtils
import com.runt.open.mvi.utils.PreferencesUtils
import java.io.File
import java.lang.reflect.ParameterizedType
@@ -101,6 +102,36 @@
        initViews() //初始化UI
        mViewModel!!.onCreate(this  as BaseActivity<LayoutView<BaseViewModel> , BaseViewModel>)
        loadData() //加载数据
    }
    override fun onPause() {
        super.onPause()
        mViewModel!!.onPause()
        Log.i(TAG , "onPause: ")
    }
    override fun onResume() {
        super.onResume()
        mViewModel!!.onResume()
        Log.i(TAG , "onResume: ")
    }
    override fun onStart() {
        super.onStart()
        mViewModel!!.onStart()
        Log.i(TAG , "onStart: ")
    }
    override fun onStop() {
        super.onStop()
        mViewModel!!.onStop()
        Log.i(TAG , "onStop: ")
    }
    override fun onDestroy() {
        super.onDestroy()
        mViewModel!!.onDestroy()
        Log.i(TAG , "onDestroy: ")
    }
    abstract fun init()
@@ -178,7 +209,7 @@
        val cR : ContentResolver = getContentResolver()
        val mime = MimeTypeMap.getSingleton()
        var filePath = mViewModel!!.getFilePathFromUri(fileUriList.get(0)!!);
        var filePath = FileUtils.getFilePathFromUri(fileUriList.get(0)!!);
        //文件不存在或读写权限受限
        if(filePath == null){
            //android 11需要申请权限 //是否有所有问读写权限
@@ -194,7 +225,7 @@
        }else{
            var filePathes = ArrayList<String>()
            for (i in 0 until fileUriList.size) {
                var filePath = mViewModel!!.getFilePathFromUri(fileUriList.get(i)!!);
                var filePath = FileUtils.getFilePathFromUri(fileUriList.get(i)!!);
                filePathes.add(filePath!!)
            }
            requestFileResult?.onChanged(filePathes)
libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt
@@ -60,6 +60,26 @@
        TAG = javaClass.simpleName;
    }
    open fun onPause(){
    }
    open fun onResume(){
    }
    open fun onStart(){
    }
    open fun onStop(){
    }
    open fun onDestroy(){
    }
    fun getActivity(): BaseActivity<LayoutView<BaseViewModel> , BaseViewModel> {
        return mActivity!!;
    }
@@ -260,32 +280,5 @@
        val json = if (obj is String) obj else Gson().toJson(obj)
        val requestBody = json.toString().toRequestBody(mediaType)
        return requestBody;
    }
    fun getFilePathFromUri(uri:Uri):String?{
        var filePath = "";
        var filePathColumn = arrayOf(MediaStore.Video.Media.DATA)
        var cursor = mActivity!!.contentResolver.query(uri!!,filePathColumn,null,null,null)
        cursor?.let {
            it.moveToFirst()
            var index = it.getColumnIndex(filePathColumn[0])
            if(index > -1 && index < it.columnCount){
                filePath = it.getString(index)
            }
            it.close();
        }
        var file = File(filePath);
        Log.i(TAG,"文件是否存在=${file.exists()} file=${filePath} ")
        if(file.exists()){
            try {
                var inputStream = FileInputStream(file)
                inputStream.close();
                return filePath;
            }catch (e:Exception){
                return null;
            }
        }else{
            return null;
        }
    }
}
libmvi/src/main/java/com/runt/open/mvi/utils/FileUtils.kt
New file
@@ -0,0 +1,48 @@
package com.runt.open.mvi.utils
import android.net.Uri
import android.provider.MediaStore
import android.util.Log
import com.runt.open.mvi.OpenApplication
import java.io.File
import java.io.FileInputStream
/**
 * @author Runt(qingingrunt2010@qq.com)
 * @purpose
 * @date 10/7/25
 */
class FileUtils {
    companion object{
        val TAG = "FileUtils";
        fun getFilePathFromUri(uri: Uri):String?{
            var filePath = "";
            var filePathColumn = arrayOf(MediaStore.Video.Media.DATA)
            var cursor = OpenApplication.getApplication()!!.contentResolver.query(uri!!,filePathColumn,null,null,null)
            cursor?.let {
                it.moveToFirst()
                var index = it.getColumnIndex(filePathColumn[0])
                if(index > -1 && index < it.columnCount){
                    filePath = it.getString(index)
                }
                it.close();
            }
            var file = File(filePath);
            Log.i(TAG,"文件是否存在=${file.exists()} file=${filePath} ")
            if(file.exists()){
                try {
                    var inputStream = FileInputStream(file)
                    inputStream.close();
                    return filePath;
                }catch (e:Exception){
                    return null;
                }
            }else{
                return null;
            }
        }
    }
}