tonyxiang
tonyxiang
  • 发布:2019-07-02 22:09
  • 更新:2020-05-12 08:54
  • 阅读:3723

【报Bug】好不容易找到plus.share.sendWithSystem,却发现想分享一个文件,注意是文件,不仅仅是图片什么的,无法实现

分类:HTML5+

好不容易找到plus.share.sendWithSystem,却发现想分享一个文件,注意是文件,不仅仅是图片什么的,无法实现。

请教一下为什么要这样去设计接口。

还是得回头用Native.js,真是坑啊

2019-07-02 22:09 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

目前还不支持,会尽快完善补充。

  • tonyxiang (作者)

    不是不支持,是把特殊的场景支持了,而通用的场景放弃了,接口设计有问题,Native.js只6行代码搞定:

    var Intent=plus.android.importClass('android.content.Intent');

    var sendIntent=new Intent(Intent.ACTION_SEND);

    sendIntent.setType('/');

    sendIntent.putExtra(Intent.EXTRA_STREAM, url);

    var chooser=Intent.createChooser(sendIntent,'发送');

    plus.android.runtimeMainActivity().startActivity(chooser);

    2019-07-03 17:18

  • 了了_

    回复 tonyxiang: 你好,文件分享怎么实现,可否分享一下

    2020-02-26 12:58

  • tonyxiang (作者)

    回复 了了_:

    最后面的send方法就是,已上线的使用的功能


    import server from './server.js';

    import cache from './cache.js';

    import statuses from './statuses.js';

    import ajax from './ajax.js';

    export default {

    //dtype,id,name

    download:function(obj){

    if(obj.length===0){

    uni.showToast({

    title:'文件是空的,无法下载!',

    icon:'none'

    });

    return;

    }

    ajax({

    url:server.getUrl('/files/permission'),

    data:{

    type:obj.dtype,

    id:obj.id,

    permission:'DOWNLOAD'

    },

    success:(res)=>{

    //下载的地址

    var url='/files/file?orgFile='+(obj.dtype=='OrgFile'?true:false)+'&ids='+obj.id;

    //创建下载任务

    var download=plus.downloader.createDownload(server.getUrl(url),{

    //下载到下载目录

    filename:'_downloads/'+obj.name,

    //任务列表显示用的

    data:{

    fileName:obj.name,

    time:new Date()

    }

    },(download, status)=>{

    //下载完成如果状态不是200则要提示用户

    if(status!=200){

    var title=statuses[status];

    if(!title){

    title='下载失败,请重新下载';

    }

    uni.showToast({

    title:title,

    icon:'none'

    });

    }

    });

    //设置上令牌

    download.setRequestHeader('tokenid',cache.get('_sessionId'));

    download.setRequestHeader('user-agent-type',plus.os.name=='Android'?'2':'3');

    //启动下载

    download.start();

    uni.showToast({

    title:'已添加到后台下载,\n\n可至"我的"=>"文件传输"中查看',

    icon:'none',

    duration:3000

    });

    }

    });

    },

    open:function(absolutePath){

    plus.runtime.openFile(plus.io.convertAbsoluteFileSystem(absolutePath),{},(error)=>{

    var msg='打开文件失败';

    if(error.code==-4){

    msg='未找到文件';

    }else if(error.code==1){

    msg='找不到可以打开此文件的应用';

    }

    uni.showToast({

    title:msg,

    icon:'none'

    });

    });

    },

    send:function(absolutePath){

    plus.io.resolveLocalFileSystemURL(plus.io.convertAbsoluteFileSystem(absolutePath),()=>{

    switch ( plus.os.name ) {

    case "Android":

    var Intent=plus.android.importClass('android.content.Intent');

    var sendIntent=new Intent(Intent.ACTION_SEND);

    var File=plus.android.importClass('java.io.File');

    var FileProvider=plus.android.importClass('io.dcloud.common.util.DCloud_FileProvider');

    var mainActivity=plus.android.runtimeMainActivity();

    var fileUri=FileProvider.getUriForFile(

    mainActivity,

    //前面部分需要与应用的包名一致

    mainActivity.getPackageName()+'.dc.fileprovider',

    new File(absolutePath));

    sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    var type=plus.android.invoke(mainActivity.getContentResolver(),'getType',fileUri);

    //微信必须要设置类型

    sendIntent.setType(type);

    sendIntent.putExtra(Intent.EXTRA_STREAM, fileUri);

    var chooser=Intent.createChooser(sendIntent,'发送');

    mainActivity.startActivity(chooser);

    break;

    case "iOS":

    //iOS以后还要优化

    var NSArray = plus.ios.import("NSMutableArray");

    var activityItems = NSArray.arrayWithCapacity(1);

    var NSURL = plus.ios.import('NSURL');

    activityItems.addObject(NSURL.fileURLWithPath(absolutePath));

    var UIActivityViewController = plus.ios.importClass("UIActivityViewController");

    var viewController = new UIActivityViewController();

    plus.ios.invoke(viewController,'initWithActivityItems:applicationActivities:',activityItems,null);

    var UIApplication = plus.ios.importClass("UIApplication");

    var sharedApplication = UIApplication.sharedApplication();

    var delegate = plus.ios.invoke(sharedApplication, "delegate");

    var window = plus.ios.invoke(delegate, "window");

    var rootViewController = plus.ios.invoke(window, "rootViewController");

    plus.ios.invoke(rootViewController, "presentViewController:animated:completion:", viewController, "YES", null);

    break;

    default:

    // 其它平台

    break;

    }

    },()=>{

    uni.showToast({

    title:'未找到文件',

    icon:'none'

    });

    });

    }

    }

    2020-02-28 11:23

  • celevenc

    回复 tonyxiang: ios 分享文件奔溃 如何解决?

    2020-05-29 16:11

  • 5***@qq.com

    什么时候支持发送文件到微信哈

    2021-12-01 11:40

3***@qq.com

3***@qq.com

如何分享图片?提示:分享图片失败,多文件分享只支持照片格式

gotogether

gotogether

ios13 好像调不起来系统分享啊

该问题目前已经被锁定, 无法添加新回复