目录

分享

接口声明

在manifest.json文件的features属性中增加如下配置。

{"name": "system.share"}

导入模块

在调用接口页面的<script>部分增加如下配置。

import share from '@system.share'

或

var share = require("@system.share")

使用限制

限制条件

说明

适用终端

手机、平板

适用区域

全球

接口定义

接口

描述

share.share(OBJECT)

分享数据到其他app。

[h2]share.share(OBJECT)

描述

分享数据到其他app

OBJECT参数

参数

类型

是否必填

说明

type

string

是

数据的MIME TYPE,要求字母全小写。

data

string

是

分享的数据。

  • 如果type是text/开头的mimetype(如text/plain),则data是要分享的文本内容
  • 如果type是其他值,则data是要分享的文件路径

支持三种文件路径:

  • 通过fetch.fetch下载的文件路径
  • 通过file.save或list获得的文件路径
  • 以/开头的应用内部的资源文件

success

function

否

成功回调。因为大部分原生app都没有正确的返回分享状态,所以即使分享成功了,也可能执行cancel回调,而不是success回调。

fail

function

否

失败回调。

cancel

function

否

取消回调。

complete

function

否

执行结束后的回调。

示例代码

share.share({
  type:"text/html",
  data:"<b>bold</b>",
  success:function(data){console.log("handling success");},
  fail: function(data, code) {
    console.log("handling fail, code=" + code);
  }
});

Demo

<template>
  <div class="container">
      <div class="item-content">
        <text class="txt">Share text:</text>
        <input style="flex: 1; font-size: 30px;" value="{{input_key}}" placeholder="Please enter something to share" onchange="shareContent" />
      </div>
      <input type="button" class="btn" onclick="shareText"  value="Click to share text" />
      <input type="button" class="btn" onclick="sharelocal"  value="Share In-app files" />
      <input type="button" class="btn" onclick="media_pickImage"  value="Select image to share" />
  </div>
</template>

<style>
  .container {
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }

  .item-content {
    background-color: #ffffff;
    padding: 30px;
    margin-bottom: 100px;
    align-items: center;
  }

  .txt {
    width: 200px;
    text-align: right;
    font-weight: bold;
  }
   .btn { 
    height: 80px;
    width: 300px;
    text-align: center;
    border-radius: 5px;
    margin-right: 60px;
    margin-left: 60px;
    margin-bottom: 50px;
    color: #ffffff;
    font-size: 30px;
    background-color: #0faeff;
  }
</style>

<script>
  import share from '@system.share'
  import media from '@system.media'
  import prompt from '@system.prompt'

  export default {
    data: {
      componentName: 'share',
      shareData: '',
    },
    onInit: function () {
      this.$page.setTitleBar({ text: 'share' })
    },
    shareContent: function (e) {
      this.shareData = e.text
    },
    shareText: function () {
      share.share({
        type: 'text/html',
        data: this.shareData,
        success: function () {
          prompt.showToast({ message: 'share success' })
          console.info('share success')
        },
        fail: function (erromsg, errocode) {
          prompt.showToast({ message: 'share fail --- ' + errocode + ':' + erromsg })
          console.info('share fail --- ' + errocode + ':' + erromsg)
        },
        cancel: function () {
          prompt.showToast({ message: 'share cancel' })
          console.info('share cancel  ')
        },
        complete: function () {
          prompt.showToast({ message: 'share complete ' })
          console.info('share complete  ')
        }
      })
    },

    sharelocal: function () {
      share.share({
        type: 'image/*',
        data: '/Common/logo.png',
        success: function () {
          prompt.showToast({ message: 'share local success' })
          console.info('share local success')
        },
        fail: function (erromsg, errocode) {
          prompt.showToast({ message: 'share local fail --- ' + errocode + ':' + erromsg })
          console.info('share local fail --- ' + errocode + ':' + erromsg)
        },
        cancel: function () {
          prompt.showToast({ message: 'share local cancel' })
          console.info('share cancel  ')
        },
        complete: function () {
          prompt.showToast({ message: 'share local complete' })
          console.info('share complete  ')
        }
      })
    },

    media_pickImage: function () {
      media.pickImage({
        success: function (ret) {
          console.log('fetch--------callback ' + ret.uri)
          share.share({
            type: 'image/jpg',
            data: ret.uri,
            success: function () {
              prompt.showToast({ message: 'share pickImage success' })
              console.info('share pickImage success')
            },
            fail: function (erromsg, errocode) {
              prompt.showToast({ message: 'share pickImage fail --- ' + errocode + ':' + erromsg })
              console.info('share pickImage fail --- ' + errocode + ':' + erromsg)
            },
            cancel: function () {
              prompt.showToast({ message: 'share pickImage cancel' })
              console.info('share pickImage cancel  ')
            },
            complete: function () {
              prompt.showToast({ message: 'share pickImage complete ' })
              console.info('share pickImage complete  ')
            }
          })
        },
        cancel: function () {
        },
        fail: function () {
        },
        complete: function () {
        }
      })
    }
  }
</script>

效果图如下: