【APICloud】App开发中加入系统分享功能案例源码分享

安全建
• 阅读 1025

最近做一个在app中加入系统分享的功能,分享一下自己踩坑的记录和成果。

安卓可以加入系统相册和文件管理器的分享菜单中,iOS目前只做到了加入在其他应用里调起系统分享的菜单,系统相册还有一些问题没有解决,欢迎各位开发者指出,一起学习。

1.Android先配置config.xml ,iOS先配置Info.plist

//config.xml: android.intent.action.SEND你app接受的单文件,mimeType是文件格式,可以自己去参考安卓官网查询

<intent-filter> 
 <action name="android.intent.action.SEND"/> 
 <category name="android.intent.category.DEFAULT"/> 
 <data mimeType="image/*" path="/"/> 
</intent-filter>
<intent-filter> 
 <action name="android.intent.action.SEND_MULTIPLE"/> 
 <category name="android.intent.category.DEFAULT"/> 
 <data mimeType="image/*" path="/"/> 
</intent-filter>

//Info.plist:记得一定要配置CFBundleTypeName字段,之前因为上架不配置此字段包无法上传,同理 LSItemContentTypes 是你app支持的文件类型。

<key>CFBundleDocumentTypes</key>
<array>
 <key>CFBundleTypeName</key>
 <string>A6026753217901</string>
 <key>LSItemContentTypes</key>
 <array>
 <string>com.microsoft.word.doc</string>
 </array>
</array>

2.监听应用被其他应用调起

api.addEventListener({
 name : 'appintent'
 }, function(ret, err) {
 if(api.systemType === 'android'){

//点击系统分享菜单分享到自己app时,这里监听返回的参数是content://格式的,这个就是系统传过来的路径,不能直接使用,需要原生Uri对象转换
//不会原生自己封装模块的,我这边已经封装好了fileScan模块的streamToAbsolutePath

 if(appParam['android.intent.extra.STREAM']){

//大家仔细观察下这个返回的参数,不像数组,中间还有个隐藏的空格字符,所以这里需要手动转换下,去掉中括号,去空格,转成以逗号分隔的形式。

 var endPath =appParam['android.intent.extra.STREAM'].replace(/[|]/g,'')
 var filePath =filePath.replace(/s+/g,'')
 var fileScan =api.require('fileScan')
 var param ={
 streamPath:filePath
 }
 fileScan.streamToAbsolutePath(param,function(ret,err){

//这里就已经成功拿到绝对路径了

 alert(JSON.stringify(ret.data))
 })
 }
 }
 if(api.systemType === 'ios'){

//ios可以直接返回绝对路径,这里不做多说

 if(ret.iosUrl&&ret.iosUrl.indexOf('/') === 0){

//拿到文件绝对路径

 var filePath =ret.iosUrl
 }
 }
});

【APICloud】App开发中加入系统分享功能案例源码分享【APICloud】App开发中加入系统分享功能案例源码分享【APICloud】App开发中加入系统分享功能案例源码分享【APICloud】App开发中加入系统分享功能案例源码分享

点赞
收藏
评论区
推荐文章
APICloud App开发上手经验之模块调用
继上次简单分享了使用APICloud开发APP的全流程后,今天来分享一下如何使用模块。APICloud提供了很多方便好用的模块,只要学习自己想要使用的模块的文档,然后调用模块就可以使用了。使用模块可以大大减少自己需要写的代码量,而且对于新手来说,在自己开发经验不足的情况下,也许并不能胜任一些功能的开发,这时候使用模块就可以让自己的APP也拥有这些功
Stella981 Stella981
3年前
Android 多渠道打包原理和使用
每次中午吃饭总会和技术同学聊天。当做iOS开发的做安卓开发的人员在一起的时候,他们中间又多了一个话题:iOS开发难还是安卓开发难。这个时候做安卓开发的同学最激动说安卓开发要自己画界面、机型复杂、操作系统多rom又被各家改的四不像....开发一个安卓APP的时间将近是开发iOS所需时间的2倍。iOS开发的同学可能就会反驳说
Stella981 Stella981
3年前
Android 8.1实现静默升级踩过的坑
最近在做Android8.1的系统自动升级app的功能,遇到不少坑,特在这里记录下来。首先,我这个自己做的安卓主板,并且安卓系统是经过root过的。如果你的系统没有root,请移步,这篇文章不适合你!先说需求,我的app会自动从服务器上下载最新版的apk安装包,然后自动安装,app监听了android.intent.action.PACKAGE
Wesley13 Wesley13
3年前
Android系统自带分享功能的实现(可同时分享文字和图片)
简单,不解释,直接上代码,可直接使用!代码如下:/分享功能@paramcontext上下文@paramactivityTitleActivity的名字@paramm
Stella981 Stella981
3年前
ShareREC for iOS录屏原理解析
文/游族网络Mob云平台iOS开发专家李永超众所周知,由于iOS系统的封闭性,也出于保护用户隐私的角度,苹果并没有公开的API供开发者调用,来录制屏幕内容。导致许多游戏或者应用没有办法直接通过调用系统API的方式提供录制功能,用户也无法将自己一些玩游戏的过程录制下来分享到其他玩家。基于此,ShareREC应运而生。下面我们从说一下Sha
Wesley13 Wesley13
3年前
MUI沉浸式菜单在安卓上的实现
以下内容均仅适用于安卓系统,iOS系统尚未完全验证。在实现沉浸式菜单的时候要注意,代码在本地调试阶段是看不到效果的,必须要发布为安装包以后才可以看到效果,如下为实现步骤:1.在manifest.json文件中增加如下两行配置:!(https://static.oschina.net/uploads/space/2016/0914
Stella981 Stella981
3年前
IM开发基础知识补课(二):如何设计大量图片文件的服务端存储架构?
友情提示:正文内容整理自架构师丁浪的技术分享,部分观点可作抛砖引玉之用,可能并非最佳实践,欢迎留言指正。1、前言一个完善的IM系统中通常充斥着大量的图片内容,包括:用户头像、图片消息、相册、图片表情等等,那么在做服务端架构设计时该如何存储这些图片呢?本文分享的是典型Web应用中大量图片的服务端存储加构的演进过程,但基本的技术原理和架
WeiSha100 WeiSha100
3年前
免费版培训机构线上学习考试系统
最近测试了一个培训机构线上学习考试的系统,源码开放,可以线上学习,刷题,直播,在线考试,还有支付功能等,可以建立起一个完整的线上培训系统,源代码和开发文档分享给大家,有需要的可以下载研究哦简单说一下这个系统的主要功能,完整的可以自行下载使用哦1、视频课程:视频课后添加课件,图文,学员可以下载练习2、题库刷题:可以批量导入导出,随时随地刷题练习3、直播:可支持
陈杨 陈杨
2个月前
鸿蒙5开发宝藏案例分享---应用接续提升内容发布体验
🌟【开发经验分享】鸿蒙应用接续功能实战:这些隐藏案例助你实现跨设备丝滑流转!各位开发者小伙伴们好呀今天在肝项目时意外解锁了HarmonyOS的一个"宝藏技能"——应用接续功能!官方文档里其实藏着超多实用案例,但很多同学可能没注意到。作为踩过无数坑的过来人
陈杨 陈杨
2个月前
鸿蒙5开发宝藏案例分享---瀑布流优化实战分享
以下是根据鸿蒙官方瀑布流优化案例整理的非官方技术分享,结合开发实战经验重新解读,加入更多场景分析和代码示例:🌟鸿蒙瀑布流性能优化实战:告别卡顿的宝藏指南!大家好!最近在鸿蒙文档里挖到一个性能优化宝藏库,原来官方早就准备好了各种场景的最佳实践!今天重点分享
上海张律师 上海张律师
2个月前
英语单词学习页面+单词朗读实现 -- 【2】单词朗读实现 ##HarmonyOS SDK AI##
​注:我需要先强调一下,我的目的不是把官网文档里的东西复制一遍……而是分享自己实际开发过程中遇到的问题和思考仍然先放一下效果图这里对于单词和例句,都是可以通过点击图片进行播报的这个功能的原理是通过文字转语音的形式实现的,之前也写过文章分享过在API9下如何