项目背景:uniapp 项目三端部署,项目中有一个 上传文件的功能,需要调用原生的 文件管理器,本来是用原生插件 但是最终拿不到,原生文件管理acticity 的  返回:

onActivityResult(int requestCode, int resultCode, Intent intent)

就是 上面这句话  不会调用:最后看到论坛上面写道:可以在  js 中访问文件管理器,并且接收到 返回:

在 js 中设置:main.onActivityResult

var main = plus.android.runtimeMainActivity();

main.onActivityResult = function(requestCode, resultCode, data) {

具体的使用:

pickFile.PickFile((path) => {//返回的路径  this.$emit('result', 'file:///' + path)
}, '*/*')

核心工具脚本: pickFile.js

/* eslint-disable */
var pickFile = {//调用原生文件系统管理器并选取文件获取文件地址PickFile:function(callback, mimeTypes) { //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 (mimeTypes) {intent.setType("*/*");intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);} 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');// DocumentProviderif (isKitKat && DocumentsContract.isDocumentUri(main, uri)) {console.log("版本大于 4.4 ");// ExternalStorageProviderif ("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]);}}}// DownloadsProviderelse 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));}// MediaProviderelse 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;}else {contentUri = MediaStore.Files.getContentUri("external");}console.log("版本大于 4.4 ",type);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));}// Fileelse 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
}
/* eslint-disable no-new */

uniapp android 调用原生 文件管理相关推荐

  1. Qt Android 调用系统文件管理

    1.了解 使用JNI扩展Qt应用 参考<Qt on Android核心编程>15章 源码https://download.csdn.net/download/dinosaurx/10149 ...

  2. android 调用系统文件管理器

    今天,简单讲讲android如何调用系统的文件管理器获取目录下的文件资源. 这几天,还是因为搬家的事,导致自己状态很差.和领导说想要辞职,领导说还是先适应一下在说.所以还是坚持了. 这个其实也很简单, ...

  3. Qt for Android调用原生接口打开相机拍照并存储照片

    Qt开发Android应用,需求是通过调用Android原生接口去打开系统相机拍照,并返回拍摄的照片.原理很简单,现在Java文件中写android代码调用相机,拍照后将将相片存储在SD卡,然后在C+ ...

  4. android 调用原生分享功能,调用Android 系统自带分享功能

    1. 设置Intent的action为Intent.ACTION_SEND. 2. 把要分享的数据通过.putExtra()传入intent. 3. 设置类型.setType(). 4.startAc ...

  5. android 调用原生相机

    GitHub public class MeFragment extends BaseFragment implements View.OnClickListener {private String ...

  6. android 图片自动裁剪图片大小,android调用原生图片裁剪后图片尺寸缩放的解决方法...

    在安卓开发中,如果对拍照后的图片进行图片裁剪,如果是调用系统的裁剪,如下: /* * 裁剪图片 */ private void cropPhoto() { Intent intent = new In ...

  7. Android 调用原生API获取地理位置和经纬度,判断所在国家

    public static boolean isCN(Context context) {TelephonyManager tm = (TelephonyManager) context.getSys ...

  8. uniapp调用手机摄像头_uniapp原生插件开发之调用原生方法(android)

    需要实现的功能: 点击uniapp页面view,传递参数,调用android原生代码,然后原生代码处理数据,返回到uniapp页面 步骤 1.编写uniapp的视图页面 {{title}} 点击调用a ...

  9. uniapp 调用原生手机联系人和获取手机联系人

    uniapp 调用手机联系人 功能需求描述 一般在设置收货地址/添加联系方式时,可以手动输入,也可以直接获取手机的联系人 方法一:通过HTML5 API中的plus.contacts.ADDRESSB ...

最新文章

  1. php etcd 服务发现,confd+etcd+nginx 实现简单服务发现
  2. order by总结
  3. 转:C#中Monitor对象与Lock关键字的区别分析
  4. UA SIE545 优化理论基础4 对偶理论简介6 求解对偶问题的梯度算法
  5. 【Java】从键盘输入字符串和数字
  6. FQND之联想--username@host.domain跟进
  7. DI(依赖注入)简单理解 NO1
  8. 【收藏】在QGIS中添加Google Maps地图和卫星影像
  9. axios vue 加载效果动画_vue+axios+element ui 实现全局loading加载示例
  10. Visual Studio 2010快捷键大全
  11. 码元、波特、速率、带宽
  12. go 遍历二维数组json_for-range造就循环永动机?快来看看go中for-range的那些事!
  13. elastaticresearch 学习过程
  14. shell脚本一键安装jdk
  15. 文献检索报告 计算机网络管理技术 中农大,文献检索论文--计算机网络管理技术《文献检索》报告.doc...
  16. 2021 Hexo+Next7最全搭建个人网站(合集)
  17. python 英语翻译 excel_Python调用百度翻译api批量翻译Excel这工作效率
  18. 并发编程系列之AQS实现原理
  19. Webstorm2018激活和汉化
  20. 在windbg中测试shadow ssdt , win32k!NtUserGetForegroundWindow , hook shadow ssdt

热门文章

  1. OTT供应商揭示安全如何影响观众体验
  2. 工业互联网成闪亮“名片”,谁能成为中西部工业第一城?
  3. MHDD的使用图解教程
  4. Java后端社招3年
  5. 微信分享显示分享标题及小图标 前端代码
  6. 云计算与虚拟化技术核心是什么?
  7. SwipeRefreshLayout实现下拉刷新功能
  8. 基本概念--MAE、MSE和RMSE
  9. js load js
  10. 故宫学系列之紫禁城:从皇宫到博物院