首页 > 其他分享 >直播平台制作,支持其他应用打开,接收其他应用文件并保存

直播平台制作,支持其他应用打开,接收其他应用文件并保存

时间:2023-05-19 14:27:25浏览次数:38  
标签:应用 val uri 直播 intent 其他 Intent type String

直播平台制作,支持其他应用打开,接收其他应用文件并保存

AndroidMainfest中

 

         <activity
            android:name=".ui.activity.OtherFileActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="file"/>
                <data android:scheme="content"/>
                <data android:mimeType="*/*"/>  
                <data android:pathPattern="*/docx"/> 
            </intent-filter>
        </activity>
 

说明

 


OtherFileActivity 其他应用调用本app 打开的activity,也是接收数据的activity
android:mimeType=“/”
android:pathPattern=“*/docx”
保存Activity中接收的文件
    override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        save(intent)
    }
    private fun save(intent: Intent?){
        val uri: Uri? = intent?.data
        val imageUri: Uri? = intent?.getParcelableExtra(Intent.EXTRA_STREAM)
        if (uri != null) {
            val scheme:String? = uri.scheme
            val host:String? = uri.host
            val port:Int = uri.port
            val path:String? = uri.path
            val query:String? = uri.query
            val action:String? = intent.action
            val type:String? = intent.type
            var content: String =""
            if (Intent.ACTION_SEND.equals(action) && type != null) {  //单文件
                if ("text/plain".equals(type)) {
                //TODO 单文本文件
                } else if (type.startsWith("image/")) {
                //TODO 单图片
                }
            } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {  //多文件
                if (type.startsWith("image/")) {
                //TODO 图片列表
                }
            }
            var inputStream: InputStream? = null
            try {
                inputStream = contentResolver.openInputStream(uri)
                 content = Util.readStreamToString(inputStream)
                //content 就是读取到的内容了,请直接食用
            } catch (e: Exception) {
                e.printStackTrace()
            } finally {
                if (inputStream != null) {
                    try {
                        inputStream.close()
                    } catch (ignored: IOException) {
                    }
                }
            }
            content.let {
                val createFiles = File(this.filesDir, path)
                createFiles.exists()
                try {
                    createFiles.createNewFile()
                } catch (e: IOException) {
                    Log.d("TAG", "files err:" + e.message)
                }
            }
        }
    }

 

 

 以上就是 直播平台制作,支持其他应用打开,接收其他应用文件并保存,更多内容欢迎关注之后的文章

 

标签:应用,val,uri,直播,intent,其他,Intent,type,String
From: https://www.cnblogs.com/yunbaomengnan/p/17414968.html

相关文章

  • Win10/11启用旧版Windows照片查看器(而非“照片”应用)
    摘自Win10/11启用旧版Windows照片查看器-哔哩哔哩(bilibili.com)方法一通过将下列文本保存在.reg文件后导入WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsPhotoViewer\Capabilities\FileAssociations]".jpg"="PhotoViewer.File......
  • 驱动开发:通过应用堆实现多次通信
    在前面的文章《驱动开发:运用MDL映射实现多次通信》LyShark教大家使用MDL的方式灵活的实现了内核态多次输出结构体的效果,但是此种方法并不推荐大家使用原因很简单首先内核空间比较宝贵,其次内核里面不能分配太大且每次传出的结构体最大不能超过1024个,而最终这些内存由于无法得到更好......
  • 文心大模型提示词笔记——应用场景案例
    发现:绝大多数应用场景的Prompt,质量都与使用者对“好结果”的了解成正比。1产品海报2写科普文 3写代码指定Markdown、js总结一下这几个例子·拿到应用场景后,先试着判断场景的任务特点,结合任务共性先优化一波。再结合场景主体、应用场合的特点,对生成内容的需求做一些补充说明。......
  • 「聊天机器人构建、智能文档问答」大模型应用开发实操课程来了
    此刻,生成式AI正以惊人的势头改变着我们的世界,无论是在科技、商业还是日常生活中,新的浪潮席卷着全球各个行业和领域。跟过去十几年中“有多少人工就有多少智能”的智障AI比起来,大模型如OpenAI的GPT-4、百度的文心一言、谷歌的PaLM2所展现出惊人的语言理解和生成能力,让人......
  • 序列化高级用法之source,序列化高级用法之定制字段的两种方式,多表关联反序列化保存,反序
    序列化高级用法之source:source的用法:1修改前端看到的字段key值---》source指定的必须是对象的属性: 前端展示效果: 2. 修改前端看到的value值,---》source指定的必须是对象的方法models中: 序列化类中: 前端展......
  • 跨平台桌面应用环境备忘录
    1、QtQt是一个跨平台的C++图形用户界面库,可以部署在Windows、Mac、Linux、嵌入式系统(QNX等)、Android等平台,兼容广泛。常用软件有:Maya、GoogleEarth、钉钉、WPS、VirtualBox、XnViewMP、RDM、OneDrive等等,应用非常广泛。 Qt目前有商业版和开源版。开源版商业化风险请参考:QtL......
  • FMC子卡设计资料原理图450-基于ADRV9009的双收双发射频FMC子卡 数字信号处理卡 射频收
    FMCJ450-基于ADRV9009的双收双发射频FMC子卡   一、板卡概述       ADRV9009是一款高集成度射频(RF)、捷变收发器,提供双通道发射器和接收器、集成式频率合成器以及数字信号处理功能。这款IC具备多样化的高性能和低功耗组合,FMC子卡为2路输入,2路输出的......
  • 面向对象设计里引入 Friend 是对封装性的破坏吗,friend 在 SAP ABAP 里的应用场景
    笔者的SAP技术交流群里,有朋友提问:我想问一个很基础的问题,为什么类要有friend啊反正我工作这些年,在SAP生产代码里没用过友元,只是在生产代码的单元测试代码里用过,原因也就是让单元测试代码能够访问到被测试的生产类的私有属性。代码如下:SAPABAP的帮助文档:在面向对象......
  • 直播预告 | 员工在公司体验感UP,原因竟然是这个......
    而随着企业数字化进程的加速,企业账号管理面临着前所未有的挑战。安全性、便捷性和管理效率成为企业管理者关注的重点。作为公司员工,“打工人”或多或少都面临着不同系统:开发工具、版本控制系统、文档管理系统、项目管理工具......“打工人”在疲于工作之外,大都会选择简单且重复......
  • Linux Pycharm 创建虚拟环境并应用
    (1)10.9.54.154面板输入:condacreate--nameTransUnetpython=3.7 (2)安装相应包,选择y (3)查看已有的虚拟环境:condainfo--envs (4)pycharm加载虚拟环境:file,settings,pythoninterpreter,addinterpreter,virtuaienvenvironment,existing,...,anaconda3,envs,Transun......