精华内容
下载资源
问答
  • WPS issue on SDK 3.0.1

    2020-12-30 05:06:22
    <p>I have issue with WPS on new SDK 3.0.1. WPS not working, and finally code is 23: user_interface.h: REASON_802_1X_AUTH_FAILED = 23, /<em> 11i </em>/ log: mode : sta(5c:cf:7f:XX:XX:XX) add if0 ...
  • Java版SDK使用说明授权模块不是独立的应用,是其他应用模块接入的前提,申请其他应用时,都需要一并申请账号授权的能力。当申请了其他的能力并选择使用Java版SDK接入时,可参考以下的SDK接口说明。若还未下载SDK,请...

    Java版SDK

    使用说明授权模块不是独立的应用,是其他应用模块接入的前提,申请其他应用时,都需要一并申请账号授权的能力。当申请了其他的能力并选择使用Java版SDK接入时,可参考以下的SDK接口说明。若还未下载SDK,请先下载SDK。

    SDK获取开发语言资源下载环境要求Java适用于Java语言、jdk版本1.7以上的环境

    SDK相关接口调用

    注意: 在调用SDK的支付相关接口前,需要先配置SDK的应用信息:

    publicstaticvoidsetConfig(Stringappid,StringappKey);

    参数说明

    参数参数类型说明appidstring应用唯一标识

    appKeystring应用秘钥

    调用方式:Config.setConfig(appId, appKey);

    SDK接口说明如下:

    1, 通过code换取网页授权access_token

    通过code换取网页授权access_token

    publicstaticTokengetToken(Stringcode);

    尤其注意:由于应用appkey和获取到的access_token安全级别比较高,后续刷新access_token、通过access_token获取用户信息等步骤,必须从服务器调用接口。

    参数说明

    参数参数类型说明codestring填写第一步获取的code参数

    调用方式:Token token = OAuth2.getToken(code);

    2, 刷新access_token (如果需要)publicstaticTokenrefreshAccessToken(Stringrefresh_token);

    由于access_token的有效期较短,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为90天,当refresh_token失效之后,需要用户重新授权。使用refresh_token刷新access_token时,会返回一个新的refresh_token。

    参数说明

    参数参数类型说明refresh_tokenstring填写通过code获取到的refresh_token参数

    调用方式:Token token = OAuth2.refreshAccessToken(refreshToken);

    3, 拉取用户信息publicstaticUserInfogetUserInfo(Stringaccess_token,Stringopenid);

    参数说明

    参数参数类型说明access_tokenstringaccess_token

    openidstring用户标识openid

    调用方式:UserInfo userInfo = OAuth2.getUserInfo(accessToken, openId);

    4, 获取RPCTOken(RPC)publicstaticStringgetRPCToken(Stringaccess_token,Stringscope);

    由于access_token的安全级别比较高,当需要客户端调用某些接口时,需要通过access_token换取一个rpc_token。客户端可以通过rpc_token直接调用接口。

    参数说明

    参数参数类型说明access_tokenstringaccess_token

    scopestring用户授权的作用域(share_file,upload_file,get_user_info)

    调用方式:String rpcToken = OAuth2.getRPCToken(accessToken);

    5, 检测RPCTOken的权限publicstaticbooleancheckRPCToken(Stringrpc_token,Stringscope);

    参数说明参数参数类型说明rpc_tokenstringrpc_token

    scopestring用户授权的作用域

    调用方式:boolean result = OAuth2.checkRPCToken(rpcToken, scope);

    展开全文
  • 最近开发一个需求是使用wps打开本地的文档,所以记录一下方便以后查阅对于Android 7.0 以后文件的读写 请参照一下链接https://www.jianshu.com/p/5ebfa842e6c1如何跳过 7.0对文件访问的权限目前我知道的有以下两点1...

    最近开发一个需求是使用wps打开本地的文档,所以记录一下方便以后查阅

    对于Android 7.0 以后文件的读写 请参照一下链接

    https://www.jianshu.com/p/5ebfa842e6c1

    如何跳过 7.0对文件访问的权限目前我知道的有以下两点

    1、将build.gradle下的targetSdkVersion改成23以下(这个也会跳过6.0的权限,但很多应用平台以后要对这个进行检测,如果不知道6.0权限检测,可能影响APP上架)

    2、在Application的onCreate中加入

    //解决FileUriExposedException。

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();

    StrictMode.setVmPolicy(builder.build());

    }

    代码:

    判断手机是否安装了 wps

    private boolean isInstall(Context context, String packageName) {

    final PackageManager packageManager = context.getPackageManager();

    // 获取所有已安装程序的包信息

    List pinfo = packageManager.getInstalledPackages(0);

    for (int i = 0; i < pinfo.size(); i++) {

    if (pinfo.get(i).packageName.equalsIgnoreCase(packageName))

    return true;

    }

    return false;

    }

    获取文档类型

    private static String getMIMEType(File f) {

    String type = "";

    String fName = f.getName();

    /* 取得扩展名 */

    String end = fName.substring(fName.lastIndexOf(".") + 1, fName.length()).toLowerCase();

    /* 依扩展名的类型决定MimeType */

    if (end.equals("pdf")) {

    type = "application/pdf";

    } else if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") ||

    end.equals("xmf") || end.equals("ogg") || end.equals("wav")) {

    type = "audio/*";

    } else if (end.equals("3gp") || end.equals("mp4")) {

    type = "video/*";

    } else if (end.equals("jpg") || end.equals("gif") || end.equals("png") ||

    end.equals("jpeg") || end.equals("bmp")) {

    type = "image/*";

    } else if (end.equals("apk")) {

    type = "application/vnd.android.package-archive";

    } else if (end.equals("pptx") || end.equals("ppt")) {

    type = "application/vnd.ms-powerpoint";

    } else if (end.equals("docx") || end.equals("doc")) {

    type = "application/vnd.ms-word";

    } else if (end.equals("xlsx") || end.equals("xls")) {

    type = "application/vnd.ms-excel";

    }else if(end.equals("txt")){

    type = "text/plain";

    }else if(end.equals("html") || end.equals("htm")){

    type = "text/html";

    } else {

    //如果无法直接打开,就跳出软件列表给用户选择

    type = "*/*";

    }

    return type;

    }

    打开文档

    private Intent getWordFileIntent(String Path) {

    File file = new File(Path);

    Intent intent = new Intent("android.intent.action.VIEW");

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    Uri uri = Uri.fromFile(file);

    String type = getMIMEType(file);

    if(type.contains("pdf") || type.contains("vnd.ms-powerpoint") || type.contains("vnd.ms-word") || type.contains("vnd.ms-excel") || type.contains("text/plain")|| type.contains("text/html")){

    if (isInstall(this, "cn.wps.moffice_eng")) {

    intent.setClassName("cn.wps.moffice_eng",

    "cn.wps.moffice.documentmanager.PreStartActivity2");

    intent.setData(uri);

    } else {

    intent.addCategory("android.intent.category.DEFAULT");

    intent.setDataAndType(uri, type);

    }

    }else{

    intent.addCategory("android.intent.category.DEFAULT");

    intent.setDataAndType(uri, type);

    }

    return intent;

    }

    应用:

    Intent intent = getWordFileIntent("文件路径");

    startActivity(intent);

    2、如果不是PDF文件

    Intent intent = getWordFileIntent(BASE_PATH + list.get(clickPosition).get("fileName"));

    try{

    startActivity(intent);

    }catch (Exception e){

    showToast("无可用打开方式,建议下载wps后重试");

    }

    给用户一个友好提示。

    OK,大功告成。

    展开全文
  • vue引入 wps在线编辑版

    千次阅读 2020-08-06 14:20:44
    import * as WPS from './assets/web/web-office-sdk-v1.1.3.es' Vue.prototype.wps = WPS; 点击查看,先调后端给的接口,获取关键的jtoken,jwpsUrl // 修改 async change() { let _this = this; t

    1.先去官网下载JS
    https://wwo.wps.cn/docs-js-sdk/#/base/quick-start
    2.main.js

    import * as WPS from './assets/web/web-office-sdk-v1.1.3.es'
    Vue.prototype.wps = WPS;
    
    

    点击查看,先调后端给的接口,获取关键的jtoken,jwpsUrl

      // 修改
        async change() {
          let _this = this;
          try {
            let { data } = await _this.$http.get(
              `/v1/3rd/file/getViewUrlWebPath?fileId=${_this.fileid}&model=write`
            );
            if (data.success == true) {
              let form = {};
              form.jtoken = data.data.token;
              form.jwpsUrl = data.data.wpsUrl;
    
              sessionStorage.setItem("wps", JSON.stringify(form));
            }
          } catch (error) {}
          console.log("fileid", this.fileid);
          // window.open("/onlineediting");
          const jump = this.$router.resolve({ name: "onlineediting" });
          window.open(jump.href, "_blank");
          // this.$router.push("/onlineediting");
        }
    

    跳转的页面

    <template>
      <div class="main">
        <div v-if="isview">
          <viewFile v-if="isview" v-bind:wpsUrl="jwpsUrl" v-bind:token="jtoken" />
        </div>
      </div>
    </template>
    <script>
    import viewFile from "../../components/view";
    export default {
      data() {
        return {
          jwpsUrl: "",
          jtoken: "",
          isview: true
        };
      },
      created() {
        let acc = JSON.parse(sessionStorage.getItem("wps"));
        console.log(acc);
    
        this.jwpsUrl = acc.jwpsUrl;
        this.jtoken = acc.jtoken;
      },
      // 通过组件渲染wps的 iframe 框架
      components: {
        viewFile
      },
      methods: {
        return1() {
          this.isview = false;
          console.log(123);
        }
      }
    };
    </script>
    
    <style lang='scss' scoped>
    .main {
      width: 100%;
      height: 100%;
      padding: 2vw;
      display: flex;
      justify-content: center;
      align-items: center;
      position: relative;
    }
    .btn {
      position: fixed;
      top: 0;
      right: 10px;
      z-index: 99;
    }
    </style>
    

    5.调用的组件

    <template>
      <div id="viewFile"></div>
    </template>
    <script>
    export default {
      props: ["wpsUrl", "token"],
      data() {
        return {
          // 是否开启简易模式
          simpleMode: false,
          isCooperUsersAvatarVisible: false, //是否显示协作用户头像
          cooperUsersColor: [
            {
              userId: "xxxxxx", // 用户id
              color: "#F65B90" // 用户光标颜色
            }
          ]
        };
      },
      mounted() {
        this.openWps(this.wpsUrl, this.token);
      },
      methods: {
        openWps(url, token) {
          let _this = this;
          const wps = _this.wps.config({
            mode: _this.simpleMode ? "simple" : "normal",
            mount: document.querySelector("#app"),
            wpsUrl: url,
            commandBars: [
              // 可以配置多个组件
              {
                cmbId: "HistoryVersion",
                attributes: {
                  visible: false, // 隐藏组件
                  enable: false // 禁用组件, 组件显示但不响应点击事件
                }
              },
              {
                cmbId: "HistoryVersionDivider",
                attributes: {
                  visible: false, // 隐藏组件
                  enable: false // 禁用组件, 组件显示但不响应点击事件
                }
              },
              {
                cmbId: "HistoryRecord",
                attributes: {
                  visible: false, // 隐藏组件
                  enable: false // 禁用组件, 组件显示但不响应点击事件
                }
              }
            ]
          });
          wps.setToken({ token: token });
          let app = wps.Application;
          // this.console.log(JSON.stringify(app));
        }
      }
    };
    </script>
    <style lang='scss' scoped>
    #viewFile {
      width: 100%;
      height: 100%;
      position: relative;
      left: 0;
      top: 0;
    }
    </style>
    

    会存在用弹框样式变了的问题,可以把组件直接换成iframe

       <!-- 查看正文 -->
        <el-dialog
          style="width: 100%; height: 100%;"
          title="正文"
          :visible.sync="fileDialogVisible"
          fullscreen="true"
        >
          <div style="width: 100%; height: 900px;">
            <iframe
              class="web-office-iframe"
              id="office-iframe"
              :src="jwpsUrl"
              scrolling="no"
              frameborder="0"
              allowfullscreen="allowfullscreen"
              webkitallowfullscreen="true"
              mozallowfullscreen="true"
              style="width: 100%; height: 100%; z-index: 3000;"
            ></iframe>
          </div>
        </el-dialog>
    

    参考:

    https://blog.csdn.net/qq_23501739/article/details/103032741
    https://blog.csdn.net/weixin_42197834/article/details/106274706

    展开全文
  • pywpsrpcWPS Office for Linux二次开发C++接口Python绑定.Read this in other languages: EnglishWPS Office二次开发接口WPS二次开发接口允许开发者通过给定的接口来调起WPS并执行指定的任务,比如你可以打开、编辑...

    pywpsrpc

    pywpsrpc.svg?branch=master

    pywpsrpc.svg

    python-3.6+-green.svg

    License-MIT-yellow.svg

    WPS Office for Linux二次开发C++接口Python绑定.

    Read this in other languages: English

    WPS Office二次开发接口

    WPS二次开发接口允许开发者通过给定的接口来调起WPS并执行指定的任务,

    比如你可以打开、编辑然后保存文档,转换文档格式等文档自动化操作,又或者将WPS嵌入到自己的程序、进行功能扩展等。

    C++ SDK头文件拷贝自wps_cpp,且无任何修改:

    Copyright @ 2012-2019, Kingsoft office,All rights reserved.

    对于pywpsrpc本身的文档,可跳转到wiki查看。

    依赖

    Python 3.6+

    Qt5 (C++ SDK依赖)

    WPS Office for Linux 11.1.0.9080+

    sip 6.0+ (仅编译)

    qmake (仅编译)

    g++ (仅编译)

    桌面环境(WPS运行需要)

    PS,目前WPS整合模式有BUG,非把WPS嵌入到自己进程的场景建议先切换到多组件模式

    如何编译

    在项目顶层目录下运行终端执行: sip-build

    如果需要查看编译相关输出信息,可添加 --verbose 选项

    安装

    建议通过PyPi安装:

    pip install pywpsrpc

    如果默认的源太慢,建议自行搜索添加中国pip源

    通过源码编译安装:

    先打包执行: sip-wheel

    打包完成后再通过pip install pywpsrpc-*.whl命令安装

    快速上手

    # 第一步先import所需模块(rpcxxxapi,xxx为对应项目的名字)

    # rpcwpsapi模块为WPS文字项目的开发接口

    # rpcwppapi则是WPS演示的

    # rpcetapi毫无疑问就是WPS表格的了

    # 另外还有common模块,为前三者的公共接口模块,通常不能单独使用

    # 调起WPS必需通过createXXXRpcInstance接口,所以导入它是必需的

    # 以WPS文字为例

    from pywpsrpc.rpcwpsapi import (createWpsRpcInstance, wpsapi)

    from pywpsrpc import RpcIter

    # 这里仅创建RPC实例

    hr, rpc = createWpsRpcInstance()

    # 注意:

    # WPS开发接口的返回值第一个总是HRESULT(无返回值的除外)

    # 通常不为0的都认为是调用失败(0 == common.S_OK)

    # 可以使用common模块里的FAILED或者SUCCEEDED去判断

    # 通过rpc实例调起WPS进程

    hr, app = rpc.getWpsApplication()

    # 比如添加一个空白文档

    hr, doc = app.Documents.Add()

    # 加点文字

    selection = app.Selection

    selection.InsertAfter("Hello, world")

    # 将前面插入的"Hello, world"加粗

    selection.Font.Bold = True

    # 光标移到末尾

    selection.EndKey()

    # 再插入空段

    selection.InsertParagraph()

    # 光标移到新段

    selection.MoveDown()

    # 再码些文字

    selection.TypeText("pywpsrpc~")

    # 使用RpcIter遍历所有段

    paras = doc.Paragraphs

    for para in RpcIter(paras):

    print(para.Range.Text)

    # 或者通过索引方式

    for i in range(0, paras.Count):

    # 注意:首个元素总是从1开始

    print(paras[i + 1].OutlineLevel)

    def onDocumentBeforeSave(doc):

    # 如果想取消当前文档保存,第二个返回值设为True

    print("onDocumentBeforeSave called for doc: ", doc.Name)

    # SaveAsUI, Cancel

    return True, False

    # 注册文档保存前通知

    rpc.registerEvent(app,

    wpsapi.DIID_ApplicationEvents4,

    "DocumentBeforeSave",

    onDocumentBeforeSave)

    # 保存文档, onDocumentBeforeSave会被调用到

    doc.SaveAs2("test.docx")

    # 退出WPS进程

    # 使用wpsapi.wdDoNotSaveChanges来忽略文档改动

    app.Quit(wpsapi.wdDoNotSaveChanges)

    例子

    在服务器上运行

    展开全文
  • pywpsrpcWPS Office for Linux二次开发C++接口Python绑定.Read this in other languages: EnglishWPS Office二次开发接口WPS二次开发接口允许开发者通过给定的接口来调起WPS并执行指定的任务,比如你可以打开、编辑...
  • 接入wps实现预览功能

    2021-02-23 11:48:25
    1:wps官网地址:https://open.wps.cn/docs/wwo/access/sdk-demo 选择下载对应的开发语言DEMO(需要注册,并生成文档预览) 2:拿到注册后的文件,并新建预览编辑服务(保证地址为外网访问) 3:直接前端访问所下载...
  • Android wps文件下载、预览跳转浏览器打开下载采用TbsSDK可App内部查看文件 跳转浏览器打开下载 这中方案是最简单的,直接跳转到我们手机浏览器,浏览器来接管后面用户下载浏览的工作。 情景一 通过一个Button跳转 ...
  • Realtek_WPS_user_guide.pdf

    2019-07-26 16:43:15
    and will utilize Realtek 8xxx-SDK to develop their products. 1.3 Definitions of Wi-Fi Protected Setup terminologies (Wi-Fi Protected Setup Specification 1.0h.pdf, p. 11) WPS: Stands for Wi-Fi ...
  • android预览word(WPS预览)

    千次阅读 2018-01-29 11:22:00
    在项目中需要加入预览文件功能,在网上搜索了大部分的回答,集合自己的项目综合考虑,调用WPS的方式更加适合自己,简单不用第三方的sdk,但是手机中得安装WPS。下面是代码:(复制的)    Intent intent...
  • Realtek_WPS_user_guide.pdf RTL819X_Firmware_Release_Note_v3.4.11D-CMCC-Pre6.pdf RTL819X_Firmware_Release_Note_v3.4.11D-CMCC-Pre6a.pdf System_Note.pdf Universal_Repeater_Mode_Guide.pdf Realtek_SDK_...
  • wps自动识别目录错误 C#概念 (C# CONCEPTS) .Net SDK now incorporates rich diagnostics and code recommendations in the .NET SDK by default. .Net SDK现在默认情况下在.NET SDK中包含了丰富的诊断和代码建议。...
  • paypal_java_wps_toolkit

    2015-11-02 11:39:49
    paypal支付老版的SDK,官网都没维护好,自己好不容易找到的。
  • 我遇到了有老师给我反馈说用我的小工具去辅助编辑课件的时候,遇到了他使用 WPS 制作的文档打开失败,原因是 WPS 制作的一些文档不符合压缩文档规范。而 Office 的基于 ECMA 376 的文档,都是使用标准的 ZIP 压缩...
  • <div><p>On master (v3.2-dev-353-gf49b40e7) and v3.1 (v3.1-51-g913a06a9) I get crashes during WPS handshake, while the same code runs on ESP32/v3.2-111-g524308c98 without a problem. <h2>Environment ...
  • MTK_Ralink_ApSoc_SDK编译总结

    万次阅读 2014-08-03 11:49:08
    1.SDK没有带Wifi驱动,需要将外部Wifi驱动拷贝到drivers/net/wireless目录,并修改Ralink目录中的...编译到goahead时,有一处错误,是goahead的Makefile(user/goahead/src)问题导致: wps.o依赖于wps_inic.o,但是
  • 在官网下载js-sdk js文件 全局引入 import * as WPS from './assets/js/jwps.es6' // 将其挂载到原型对象上 Vue.prototype.wps = WPS; 使用方法 .将其封装为组件 <template> <div id="viewFile...
  • 最近下了WPS,但是用着...发现有2个adb进程 然后分别打开进程位置,第一个是正确的SDK里面的platform-tools下, 而第二个却是在C:\Users\cai\AppData\Roaming\Kingsoft\wps\addons\pool\win-i386\kwpsandroidtools_1.0
  • It does restart 7 seconds (watchdog timeout) after calling <a href="https://github.com/espressif/ESP8266_RTOS_SDK/blob/be28244ac0e528a15860e62dbfc88c2a70f96431/examples/wifi/wps/main/wps.c#L112">esp_...
  • 点聚WebOffice系列文档控件,是北京点聚信息技术有限公司经过多年的开发和不断完善,独立自主开发...点聚WebOffice系列文档控件,能够在浏览器窗口中直接编辑Word、Excel、PowerPoint、WPS、CEB等文档并保存到Web服务
  • 2.WebOffice接口SDK 3.WebOffice网页接口调用例子 4.DES手写及签章系统(Office签章系统)试用版。 5.演示章及证书 6.点聚产品白皮书 WebOffice组件可以无缝集成点聚公司的电子签章和手写审批类产品。 点聚信息...
  • realtek无线芯片方案 RTL8192 SDK软件开发指导手册。 AP-Router SDK User Guide ................................................................................................................................
  • <div><p>Just like a normal wps pin connect app </p><p>该提问来源于开源项目:espressif/ESP8266_RTOS_SDK</p></div>
  • com.tencent.smtt.sdk.WebView forumConte = (com.tencent.smtt.sdk.WebView) view.findViewById(R.id.webview); SuperFileView2 mSuperFileView = (SuperFileView2) view.findViewById(R.id.mSuperFileView); ...
  • <p>C:\Users---\Documents\Arduino\hardware\espressif\esp32/tools/sdk/include/esp32/esp_wps.h:86:1: error: C99 designator 'manufacturer' outside aggregate initializer } ^ C:\Users---\Documents...
  • /Users/to/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32/esp_wps.h:86:1: error: C99 designator 'manuf acturer' outside aggregate initializer } ^ .piolibdeps/...
  • UCDOS7.0安装光盘

    2016-09-13 10:06:29
    该版UCDOS有一个错误,就是执行UCSHELL(UCDOS的一个图形操作界面)时会提示找不到SDK.DRV文件,其实该文件就在UCDOS目录下,执行一下COPY C:\UCDOS\SDK.DRV C:\UCDOS\DRV\*.*,将SDK.DRV复制到下一级的DRV目录即可...
  • 如果大家要装wineQQ,androidSDKWPS,Google Earth, 用GCC编译32位程序,最好是最先限度安装需要的库,但是这回让事情困难很多。简单粗暴的可以安装ia32-libs,来解决一切问题。让64位系统兼容32位程序,像windows...
  • PAYPAL EC快速支付接入汇总

    千次阅读 2016-12-23 15:53:19
    Paypal 有两种接入方式比较常用,EC快速支付和wps支付。这里我们只讲EC快速支付。 联系官方获取SDK并成功运行时第一步。 官方给的SDK里有samples DEMO,常用的就是里边的 ExpressCheckout SET/GET/DO/ 以及...
  • Android集成腾讯X5实现文档浏览功能

    千次阅读 2019-10-19 11:50:19
    Android内部没有控件来直接显示文档,跳转WPS或其他第三方文档App体验性不好,使用腾讯X5内核能很好的解决的这一问题。 一、下载腾讯X5内核 1.前往https://x5.tencent.com/下载Android的内核,新版本的腾讯X5可以...

空空如也

空空如也

1 2 3 4
收藏数 69
精华内容 27
关键字:

sdkwps