//调起所有文件 包括相册 视频 相机 录像private fun getAllFile() {//カメラの起動Intentの用意val photoName = System.currentTimeMillis().toString() + ".jpg"val contentValues = ContentValues()contentValues.put(MediaStore.Images.Media.TITLE, photoName)contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/*")mUri = context?.contentResolver?.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues)val intentCamera = Intent(MediaStore.ACTION_IMAGE_CAPTURE)intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, mUri)uiApplication!!.setCommonUri(mUri!!)var mUriVideo: Uri? = nullval videoName = System.currentTimeMillis().toString() + ".mp4"val contentValues2 = ContentValues()contentValues2.put(MediaStore.Images.Media.TITLE, videoName)contentValues2.put(MediaStore.Images.Media.MIME_TYPE, "video/*")mUriVideo = context?.contentResolver?.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,contentValues2)uiApplication!!.setCommonVideoUri(mUriVideo!!)val intentCameraVideo = Intent(MediaStore.ACTION_VIDEO_CAPTURE)intentCameraVideo.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0)intentCameraVideo.putExtra(MediaStore.EXTRA_OUTPUT, mUriVideo)// ギャラリー用のIntent作成val intentGallery = Intent(Intent.ACTION_GET_CONTENT)intentGallery.addCategory(Intent.CATEGORY_OPENABLE)intentGallery.type = "*/*"intentGallery.putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/*", "video/*"))val intent = Intent.createChooser(intentCamera, "画像の選択")intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, arrayOf(intentGallery, intentCameraVideo))mainActivity.startActivityForResult(intent, Constants.REQUEST_CODE_IMAGE_CHOOSER_REQUEST)}
——————————————————————————————————————————————————————————————————————————————————————
//选取照片文件和拍照
private fun getImageFile() {//カメラの起動Intentの用意val photoName = System.currentTimeMillis().toString() + ".jpg"val contentValues = ContentValues()contentValues.put(MediaStore.Images.Media.TITLE, photoName)contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/*")mUri = context?.contentResolver?.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues)val intentCamera = Intent(MediaStore.ACTION_IMAGE_CAPTURE)intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, mUri)uiApplication!!.setCommonUri(mUri!!)// ギャラリー用のIntent作成val intentGallery = Intent(Intent.ACTION_GET_CONTENT)intentGallery.addCategory(Intent.CATEGORY_OPENABLE)intentGallery.type = "*/*"intentGallery.putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/*"))val intent = Intent.createChooser(intentCamera, "画像の選択")intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, arrayOf(intentGallery))mainActivity.startActivityForResult(intent, Constants.REQUEST_CODE_IMAGE_CHOOSER_REQUEST)}
——————————————————————————————————————————————————————————————————————————————————————
//选择视频 照片回调
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)if (resultCode == Activity.RESULT_OK && requestCode == Constants.REQUEST_CODE_IMAGE_CHOOSER_REQUEST) {// カメラからの戻りvar uri = if (data == null || data.data == null) uiApplication.getCommonUri().toString() else data.datavar videoUri = if (data == null || data.data == null) uiApplication.getCommonVideoUri().toString() else data.dataif ((data == null || data.data == null) && uriLength(applicationContext, Uri.parse(videoUri.toString())) > 0){uri = videoUri}if (uri.toString().contains("image")) {binding.apply {onUpdateFileEvent(AddedAttachedFIlesEvent(data?.data, AttachedFileType.IMAGE))}} else if (uri.toString().contains("video")) {binding.apply {onUpdateFileEvent(AddedAttachedFIlesEvent(data?.data, AttachedFileType.VIDEO))}} else {return;}}super.onActivityResult(requestCode, resultCode, data)}
——————————————————————————————————————————————————————————————————————————————————————private fun uriLength(context: Context, uri: Uri): Long =when (uri.scheme) {ContentResolver.SCHEME_FILE -> File(uri.path).length()ContentResolver.SCHEME_CONTENT -> try {context.contentResolver.openFileDescriptor(uri, "r")?.statSize ?: 0} catch (e: Exception) {0L}else -> 0L}

Android 调起文件,相册 实现选择图片与视频相关推荐

  1. 【OkHttp】OkHttp 上传图片 ( 获取 SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 )

    OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...

  2. uni-app用uni.chooseImage API调用相机或从相册中选择图片

    uni-app用uni.chooseImage API调用相机或从相册中选择图片 chooseImage: function() {var _this = this;uni.chooseImage({ ...

  3. 跳转谷歌相册选择图片及视频

    只选择图片 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); ...

  4. 小程序选择图片音视频的方法chooseMedia

    前几天写了一个方法,目的是去更换头像,如微信里的更换头像. 页面如上图,点击后触发事件,打开存放图像的文件,选择想更换的图像. 视图页:<image src="{{imgUrl}}&q ...

  5. uni-app: APP端同时选择图片和视频,长按删除并震动提示

    APP端同时选择图片和视频 全部代码: <!-- --> <template><view><view><view><view styl ...

  6. Android --- 从相册中选择图片或者拍着选择图片遇到的问题

    1.从相册选择的图片会存储到 data 里面,而相机拍照的图片不会存储到 data 里面 2.由于从相册选择的图片会存储到 data 里面,而相机拍照的图片不会存储到 data 里面,所以在获取图片资 ...

  7. android 仿微信选取相册_Android--选择图片(仿微信发朋友圈)第一篇

    这篇博客主要写仿微信朋友圈选择图片发朋友圈.整个功能包括加载图片,显示图片.相册文件夹.预览图片,九宫格显示已经选择好的图片等等,大概会有三篇博客. 效果图 看上面的图,加载图片肯定是异步加载,耗时任 ...

  8. Android 如何从系统图库中选择图片

     这几天我都在做Android的App,同时学习它的API,我将分享一些我学到的东西,比如: 如何从系统图库中选择图片. 首先,让我们来看看如何将手机系统图库集成到你的App中,然后再从图库中选择 ...

  9. Andorid 拍照、从相册中选择图片兼容7.0uri

    其中点击事件如下:  图片: Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Med ...

最新文章

  1. C++多线程:互斥变量 std::mutex
  2. 自建分布式存储新选择,性能是Ceph的1.84倍
  3. ​十六周一次课(4月11日) 学习完成 18.11 LVS DR模式搭建 18.12 keepalived + LVS
  4. 选轻量应用服务器or云服务器ECS?一图帮你彻底区分
  5. 【guava】大数据量下的集合过滤—Bloom Filter
  6. python用什么来写模块-史上最详细的python模块讲解
  7. 数据库问题6-將系統資料表對應至系統檢視
  8. 最小二乘法的思路及推导过程
  9. ARM Coresight
  10. 二维导热问题的ADI-TDMA算法
  11. 【JS】1007- JavaScript实现网页截屏的5种方法
  12. VMware 安装失败解决方案,亲测有效
  13. 如何将台式计算机连接到WiFi,台式机怎么连接wifi?台式电脑连接无线网络的方法(图文)...
  14. Docker Mysql使用学习
  15. 抖音直播流量怎么来?四大渠道告诉你
  16. Android Studio 快捷键整理
  17. 一个中国方案的落地:马云的eWTP,如何让马来西亚第一个all in
  18. 晶体硅太阳能电池产线性能跟踪项目
  19. 【Win32多线程】异步I/O技术(Overlapped I/O),避免使用多线程
  20. linux 的网络命令

热门文章

  1. Linux Java JDK下载及安装
  2. python八进制转二进制_python中的二进制十六进制和八进制
  3. 网络攻防之缓冲区溢出攻击
  4. 网络安全攻防之缓冲区溢出攻击
  5. (分享)15款工具合集网站
  6. ubuntu中卸载没有安装完全的软件包
  7. IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告
  8. php如何validate,Thinkphp5如何使用validate实现验证功能
  9. SpringBoot整合Sharding-JDBC通过标准分片策略(Standard)实现分表操作
  10. SIGINT SIGPIPE SIGTERM SIGSEGV SIG_IGN产生原因及处理