首页 > 其他分享 >uniapp安卓选择文件

uniapp安卓选择文件

时间:2023-05-29 11:44:52浏览次数:50  
标签:uniapp 文件 安卓 uri plus importClass var android main

引用

import {pickFile} from '@/js/common/pickFile.js'

使用

pickFile.PickFile(function(audioSrc){  
     console.log(audioSrc)  
    _this.audioSrc = 'file://' + audioSrc;  
    // _this.audioSrc = 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/audio/music.mp3'  
    // 这里就会得到 你选择的文件路径。拿到路径后,你可以用uni.uploadFile  进行上传。  
}, 'audio/*');  
//这里第一个参数是 回调函数,第二个是你要选择的文件类 "image/*","audio/*","video/*;image/*"

pickFile.js
var pickFile = {  
    //调用原生文件系统管理器并选取文件获取文件地址  
    PickFile:function(callback, acceptType) { //acceptType为你要查的文件类型"image/*","audio/*","video/*;image/*"  // intent.setType("image/*");//intent.setType("audio/*"); //选择音频//intent.setType("video/*;image/*"); //选择视频 (mp4 3gp 是android支持的视频格式)  
        var CODE_REQUEST = 1000;  
        var main = plus.android.runtimeMainActivity();  
        if (plus.os.name == 'Android') {  
            var Intent = plus.android.importClass('android.content.Intent');  
            var intent = new Intent(Intent.ACTION_GET_CONTENT);  
            intent.addCategory(Intent.CATEGORY_OPENABLE);  
            if (acceptType) {  
                intent.setType(acceptType);  
            } else {  
                intent.setType("*/*");  
            }  
            let _this = pickFile;  
            main.onActivityResult = function(requestCode, resultCode, data) {  
                if (requestCode == CODE_REQUEST) {  
                    var uri = data.getData();  
                    plus.android.importClass(uri);  
                    var Build = plus.android.importClass('android.os.Build');  
                    var isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;  

                    var DocumentsContract = plus.android.importClass('android.provider.DocumentsContract');  
                    // DocumentProvider  
                    if (isKitKat && DocumentsContract.isDocumentUri(main, uri)) {  
                        console.log("版本大于 4.4 ");  
                        // ExternalStorageProvider  
                        if ("com.android.externalstorage.documents" == uri.getAuthority()) {  
                            var docId = DocumentsContract.getDocumentId(uri);  
                            var split = docId.split(":");  
                            var type = split[0];  

                            if ("primary" == type) {  
                                var Environment = plus.android.importClass('android.os.Environment');  
                                callback(Environment.getExternalStorageDirectory() + "/" + split[1]);  
                            } else {  
                                var System = plus.android.importClass('java.lang.System');  
                                var sdPath = System.getenv("SECONDARY_STORAGE");  
                                if (sdPath) {  
                                    callback(sdPath + "/" + split[1]);  
                                }  
                            }  
                        }  
                        // DownloadsProvider  
                        else if ("com.android.providers.downloads.documents" == uri.getAuthority()) {  
                            var id = DocumentsContract.getDocumentId(uri);  
                            var ContentUris = plus.android.importClass('android.content.ContentUris');  
                            var contentUri = ContentUris.withAppendedId(  
                                //    Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));  
                                Uri.parse("content://downloads/public_downloads"), id);  
                            callback(_this.getDataColumn(main, contentUri, null, null));  
                        }  
                        // MediaProvider  
                        else if ("com.android.providers.media.documents" == uri.getAuthority()) {  
                            var docId = DocumentsContract.getDocumentId(uri);  
                            var split = docId.split(":");  
                            var type = split[0];  

                            var MediaStore = plus.android.importClass('android.provider.MediaStore');  
                            if ("image" == type) {  
                                contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;  
                            } else if ("video" == type) {  
                                contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;  
                            } else if ("audio" == type) {  
                                contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;  
                            }  

                            var selection = "_id=?";  
                            var selectionArgs = new Array();  
                            selectionArgs[0] = split[1];  

                            callback(_this.getDataColumn(main, contentUri, selection, selectionArgs));  
                        }  
                    }  
                    // MediaStore (and general)  
                    else if ("content" == uri.getScheme()) {  
                        callback(_this.getDataColumn(main, uri, null, null));  
                    }  
                    // File  
                    else if ("file" == uri.getScheme()) {  
                        callback(uri.getPath());  
                    }  
                }  
            }  
            main.startActivityForResult(intent, CODE_REQUEST);  
        }  
    },  

    getDataColumn:function(main, uri, selection, selectionArgs) {  
        plus.android.importClass(main.getContentResolver());  
        let cursor = main.getContentResolver().query(uri, ['_data'], selection, selectionArgs,  
            null);  
        plus.android.importClass(cursor);  
        if (cursor != null && cursor.moveToFirst()) {  
            var column_index = cursor.getColumnIndexOrThrow('_data');  
            var result = cursor.getString(column_index)  
            cursor.close();  
            return result;  
        }  
        return null;  
    }  
}  

module.exports = {  
    pickFile: pickFile  
}  

标签:uniapp,文件,安卓,uri,plus,importClass,var,android,main
From: https://www.cnblogs.com/jyc226/p/17440022.html

相关文章

  • uniapp避坑指南-页面滚动
    uniapp避坑指南-页面滚动需求描述做一个类似于word目录跳转功能,分成两个页面:目录页和详情页。目录页是一个列表,详情页是一个很长的的由很多pdf图片组成的上下滚动的页面,要求实现点击目录页跳转到详情页指定位置。功能实现主要使用uni.pageScrollTo这个api。我的工程是cli创建......
  • uniapp避坑指南-图片预览
    uniapp避坑指南-图片预览(本地预览)需求描述有一个类似以下的数组,通过v-for循环,现在需要在用户点击图片后使用uniapp的图片预览Api。//view<viewv-for:'(item,index)inpicList':key="index"><image:src="item.url"@click='imgPreview(item.url,id)'>......
  • 发布-优化图片和js文件的存放路径
    把JavaScript文件同意生成到js目录中在webpack.config.js配置文件的output节点中,进行如下的配置:{test:/\.jpg|png|gif$/,use:'url-loader?limit=470&outputPath=images'}......
  • 静态配置文件的问题
    静态配置文件的问题在业务量比较小的单体应用中,静态文本配置文件使用是没有大的问题。但是随着业务逐渐发展壮大,对大单体拆分为多个应用,就会产生一些问题:配置文件分散,修改起来比较麻烦配置生效不及时,修改后需要重启应用以使配置生效多环境配置,无法区分多个配置环境,比如开发的......
  • 常见项目——C语言实现2048小游戏(附源码和可执行文件)
    1.实现效果展示1.1界面图片说明:进入下面各页面后均可通过按键“q”来退出。1)菜单页2)开始游戏页3)游戏规则页4)按键说明页5)退出游戏页1.2视频展现戳此处查看视频演示1.3游戏源码及可执行文件(exe)下载支持作者,请关注公众号“优秀物联人”回复“2048小游戏”获取下......
  • Python 使用ConfigParser操作ini配置文件
    ini配置文件格式如下要求:ini文件必须是GBK编码,如果是UTF-8编码,python读取配置文件会报错。#这里是注释内容#[FY12361]#妇幼保健接口服务端口serverIP=192.168.1.11serverPort=8400[SM]#国产SM加密服务端口serverIP=192.168.1.11serverPort=8500说明:1.注释内容......
  • TransformMine图片表格化安卓APP
    TransformMine图片表格化安卓APP展示: 部分代码:<?xmlversion="1.0"encoding="utf-8"?><com.scwang.smart.refresh.layout.SmartRefreshLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://s......
  • QT文件操作
    一、IO设备操作介绍TheQIODeviceclassisthebaseinterfaceclassofallI/OdevicesinQt.QIODeviceprovidesbothacommonimplementationandanabstractinterfacefordevicesthatsupportreadingandwritingofblocksofdata,suchasQFile,QBufferandQT......
  • IIS短文件名暴力枚举漏洞利用工具(IIS shortname Scanner)
    脚本可以测试对应的URL是否存在漏洞,若存在漏洞,则猜解文件夹下所有的短文件名:包括文件和文件名。网上早前已经有公开的工具了:https://code.google.com/p/iis-shortname-scanner-poc/我没有参考他的代码。自己用python实现了一个漏洞利用脚本。简单测试,发现比上面的POC能猜解到更......
  • java快速写出文本到文件,可追加写入
    我这只是个简单的测试,不知道那些日志框架是不是这么个原理呢,有没有大佬指点一下 publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{Stringaa="啊啊啊啊啊啊啊啊啊啊";Filefile=newFile("D://test.txt");......