• 【HTTP API】ideahub 的 api 能不能允许跨域
    跨域会导致不能在浏览器中调用API,是否可以设置允许跨域请求?
  • [问题求助] ideahub board 可以通过HTTP API静默升级应用吗?
    ideahub board / pro / board 2 可以通过HTTP API静默升级应用吗?后台管理没有看到静默升级的权限
  • [其他问题] HTTP API 是否可以在浏览器中调用?
    后台管理web页面的接口可以直接调用,但是http api不行(有哪里需要配置?但是我在后台管理页面没找到)如图:
  • [其他问题] IdeaHub Board 3 2.1通过USB无法adb连接
    请教2个问题:1)打开开发者选项里的USB调试选项,用USB线连接设备后,执行adb devices无法找到设备。2)DevEco Studio编译出的.hap文件,通过USB拷贝到Board 3中,识别为未知类型的文件,无法安装。
  • [技术干货] 从0到1开发一款自己的vscode插件
    一、vscode插件是什么?大家对vscode肯定都不陌生,其是微软推出的一款轻量级代码编辑器,在使用的时候总会时不时的安装一些插件去协助我们进行开发,这些插件就是利用vscode给我们开放的一些API的基础上进行扩展功能的开发,从而解决开发中的一些问题,提高生产效率。这种插件化思想一方面使该代码编辑器更轻量化;另一方面能够充分利用社区的力量,为其提供更加多元化的插件。二、vscode插件能做什么?vscode插件能做什么?其核心点在于vscode为其提供了哪些开放能力,只有其开放的能力才能为我们所用,就官网来看,利用vscode插件能够做以下事情(该部分来自于vscode官网扩展能力概述部分):通用功能可以在任何扩展中使用的核心功能,主要包括以下几点:(1)能够添加命令、配置项、快捷键、菜单项、右键菜单;(2)存储工作区或全局数据;(3)展示通知信息;(4)使用快速选择收集用户的输入;(5)打开文件选择器让用户去选择文件或文件夹;(6)使用Progress API去阐述长时间运行的操作;主题化控制vscode的外观,包括编辑器中源代码的颜色和vscode ui的颜色,其主要包含三种类型的主题:(1)颜色主题:其允许将颜色应用于VS Code UI组件和编辑器中的文本;(2)文件图标主题:文件图标显示在VS Code UI中的位置,例如文件资源管理器、快速打开列表和编辑器选项卡;(3)产品图标主题:在整个UI中使用的一组图标声明性语言特性声明性语言功能为编程语言添加了基本的文本编辑支持,例如括号匹配、自动缩进和语法突出显示。程序语言特性编程语言功能添加了丰富的编程语言支持,例如悬停、转到定义、诊断错误、IntelliSense 和 CodeLens。扩展工作台工作台是指包含标题栏、活动栏、侧边栏、控制板、编辑组、状态栏等UI组件的整体Visual Studio Code UI。VS Code提供了各种API,允许将自己的组件添加到工作台。调试可以通过编写将 VS Code 的调试 UI 连接到特定调试器或运行时的调试器扩展来利用 VS Code 的调试功能。三、vscode插件实战vscode插件其实是vscode对外提供了一些能力,如果不是特别需要其实没有必要完整的学习整体内容,仅仅需要了解其大体开发思路、能够解决的问题,之所以这么说是因为(以上纯个人观点,不一定正确)学习该部分的内容需要一定精力,但学后并不一定能够在自己项目中得到使用,深入学习投入于产出并不成正比,所以本次我只会讲述入门级内容,具体的内容扔需要读者在需要这一部分能力的时候再深入研究。3.1 项目初始化官方为了方便开发人员进行vscode插件的开发,提供了对yo应的脚手架来生成对应的项目。javascript复制代码// 安装需要的包 npm install -g yo generator-code // 运行 yo code 上述命令其实安装了两个包(yo和generator-code),这两个包用途如下:yo模块全局安装后就安装了Yeoman,Yeoman是通用型项目脚手架工具,可以根据一套模板,生成一个对应的项目结构generator-code模块是VS Code扩展生成器,与yo配合使用才能构建项目。3.2 重要文件在项目生成之后,目录结构如下所示,其中最重要的文件是package.json和extension.js,了解这两个文件基本上就可以入门开发一个vscode插件了。3.2.1 package.json该文件是vscode扩展的清单文件,里面有很多字段,官方对每个字段都进行了详细阐述,本次我们重点阐述以下初始化后期清单文件。json复制代码{ "name": "demo", // 插件名 "displayName": "插件", // 显示在应用市场的名字 "description": "我的第一个插件测试", // 具体描述 "version": "0.0.1", // 插件的版本号 "engines": { "vscode": "^1.60.0" // 最低支持的vscode版本 }, "categories": [ "Other" // 扩展类别 ], // 激活事件组,在那些事件情况下被激活 "activationEvents": [ "onCommand:demo.helloWorld" ], // 插件的主入口文件 "main": "./extension.js", // 贡献点 "contributes": { // 命令 "commands": [ { "command": "demo.helloWorld", "title": "Hello World" } ] }, "scripts": { "lint": "eslint .", "pretest": "npm run lint", "test": "node ./test/runTest.js" }, // 开发依赖项 "devDependencies": { "@types/vscode": "^1.60.0", "@types/glob": "^7.1.3", "@types/mocha": "^8.2.2", "@types/node": "14.x", "eslint": "^7.27.0", "glob": "^7.1.7", "mocha": "^8.4.0", "typescript": "^4.3.2", "vscode-test": "^1.5.2" } } 在这份清单文件中,重点关注的主要有三部分内容:activationEvents、main以及contributes,其是整个文件中的重中之重。main指明了该插件的主入口在哪,只有找到主入口整个项目才能正常的运转、activationEvents指明该插件在何种情况下才会被激活,因为只有激活后插件才能被正常使用,官网已经指明了激活的时机,这样我们就可以按需设置对应时机。(具体每个时机用的时候详细查看即可)onLanguage 打开解析为特定语言文件时被激活,例如"onLanguage:python"onCommand 在调用命令时被激活onDebug 在启动调试话之前被激活onDebugInitialConfigurationsonDebugResolveworkspaceContains 每当打开文件夹并且该文件夹包含至少一个与 glob 模式匹配的文件时onFileSystem 每当读取来自特定方案的文件或文件夹时onView 每当在 VS Code 侧栏中展开指定 id 的视图onUri 每当打开该扩展的系统范围的 Uri 时onWebviewPanelonCustomEditoronAuthenticationRequest* 只要一启动vscode,插件就会被激活onStartupFinishedcontributes通过扩展注册contributes用来扩展Visual Studio Code中的各项技能,其有多个配置,如下所示:breakpoints 断点colors 主题颜色commands 命令configuration 配置configurationDefaults 默认的特定于语言的编辑器配置customEditors 自定义编辑器debuggersgrammarsiconThemesjsonValidationkeybindings 快捷键绑定languagesmenusproblemMatchersproblemPatternsproductIconThemesresourceLabelFormatterssnippets 特定语言的片段submenustaskDefinitionsthemes 颜色主题typescriptServerPluginsviewsviewsContainersviewsWelcomewalkthroughs3.2.2 extension.js文件该文件时其入口文件,即package.json中main字段对应的文件(不一定叫extension.js这个名字),该文件中将导出两个方法:activate和deactivate,两个方法的执行时机如下所示:activate这是插件被激活时执行的函数deactivate这是插件被销毁时调用的方法,比如释放内存等。3.3 实战上述已经对vscode插件有了基础的认识,下面就进行一个简单的实战,打造属于自己的一个vscode插件,此插件的功能如下:通过在文件编辑区域或文件名上右击弹出按钮,点击按钮获取文件的大小、创建时间和修改时间;如果获取的是文件夹,则指明该文件是文件夹,不是文件,给予提示。3.3.1 package.json修改项json复制代码{ // …… // 在getFileState指令下激活 "activationEvents": [ "onCommand:getFileState" ], // 入口文件 "main": "./extension.js", "contributes": { // 命令 "commands": [ { "command": "getFileState", "title": "File State" } ], // 菜单项 "menus": { // 编辑上下文菜单 "editor/context": [ { "when": "editorFocus", "command": "getFileState", "group": "navigation" } ], // 资源管理器上下文菜单 "explorer/context": [ { "command": "getFileState", "group": "navigation" } ] } }, // …… } 3.3.2 主函数内容javascript复制代码const vscode = require('vscode'); const fs = require('fs'); function activate(context) { console.log('插件已经被激活'); // 注册命令 let commandOfGetFileState = vscode.commands.registerCommand('getFileState', uri => { // 文件路径 const filePath = uri.path.substring(1); fs.stat(filePath, (err, stats) => { if (err) { vscode.window.showErrorMessage(`获取文件时遇到错误了${err}!!!`) } if (stats.isDirectory()) { vscode.window.showWarningMessage(`检测的是文件夹,不是文件,请重新选择!!!`); } if (stats.isFile()) { const size = stats.size; const createTime = stats.birthtime.toLocaleString(); const modifyTime = stats.mtime.toLocaleString(); vscode.window.showInformationMessage(` 文件大小为:${size}字节; 文件创建时间为:${createTime}; 文件修改时间为:${modifyTime} `, { modal: true }); } }); const stats = fs.statSync(filePath); console.log('stats', stats); console.log('isFile', stats.isFile()); }); // 将命令放入其上下文对象中,使其生效 context.subscriptions.push(commandOfGetFileState); } function deactivate() {} module.exports = { activate, deactivate } 3. 4 发布插件看法完毕之后就是需要分享出去供大家使用,目前有三种方式:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然后重启vscode,一般不推荐;打包成vsix插件,然后发送给别人安装,如果你的插件涉及机密不方便发布到应用市场,可以尝试采用这种方式;注册开发者账号,发布到官网应用市场,这个发布和npm一样是不需要审核的。每一种方式都可行,并且网上也有很多教程讲述其发布方式,今天我重点讲述一下第二种,毕竟在插件这么多的情况下,很多人更乐于开发一款属于自己的专用插件或者特定自己领域使用的插件,完全没必要发布到应用市场。安装对应的模块vscejavascript复制代码npm i vsce -g 利用vsce进行打包,生成对应的vsix文件javascript复制代码vsce package 安装到vscode安装完成之后就可以正常的进行使用了四、总结因为工作中目前还没有遇到这种需求,此次我只是对vscode插件的开发流程进行了一个简单的概述,并没有进一步深入探索,待工作中有这样的场景需要这样的能力去解决某些问题时,能够快速反应有这样的解决方案,再进一步学习也为时不晚,也希望爱学习的小伙伴们也对这一部分能够有一定了解,弥补自己知识上欠缺的一环,后续为己所用。五、参考文献vscode插件编写实战vscode插件开发全攻略官方文档作者:前端点线面链接:https://juejin.cn/post/7010765441144455199来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 有能力的加
    曾拿过这类比赛奖项,做过硬件Ascend一些项目,能够结合起来,来的加
  • [投屏] 投屏SDK Demo初始化失败问题求助
    Hi,我在集成IdeaShare SDK 2.1.0 windows版本中遇到问题如下:我编译了gitee上Demo(基于qt5.14.2),修改了qt版本为qt5.15.2,关于sdk的部分没有任何修改,正常运行,但是在输入投屏码后程序报错,调试Demo代码发现  Huawei::Idea::ShareServiceController::GetInstance()->Create()  方法返回值为1, 注释指示了非0代表初始化失败。初始化错误调试截图如下:输入投屏码报错调试如下:我使用的SDK版本是 IdeaHub Engine Suite_21.1.0_IdeaShareSDK_Windows开发文档参考了《IdeaShare SDK 2.1.0 开发指南(Windows,C++).docx》 《IdeaHub Engine Suite 21.1.0投屏客户端SDK Demo指南(Windows,C++).docx》 《IdeaHub Engine Suite 21.1.0投屏客户端SDK接口参考_Windows,C++.docx》其他尝试信息如下:1. 我使用SDK压缩包中附带的ideaShareSDKDemo.exe安装demo,可以正常运行投屏。2. 我拷贝了ideaShareSDKDemo.exe安装后目录 “C:\Program Files (x86)\ideaShareSDKDemo”中与SDK同名的dll文件,替换我使用的SDK文件,代码编译的Demo仍然出现同样错误。3. 摘出Demo中SDK初始化的部分代码,用VS2017创建新的test工程进行最小化运行测试,仍然是同样的错误。请求大侠们的帮助!
  • [其他问题] 霸屏APP被主动拉起的场景及有没有API可以主动拉起?
    目前在测试霸屏APP的功能,发现通过API接口设置霸屏APP成功后,未发现跟未设置霸屏APP,有任何区别,设置完霸屏APP,该APP也未一直显示在前台,文档也没有关于霸屏APP可以实现哪些功能,有同学知道霸屏APP的设置具体可以做哪些东西吗?若是可以被系统主动拉起,那在哪些业务场景可以被拉起呢?
  • [其他问题] IdeaHub debug模式怎么设置常开?每次用着用着就关闭了,需要手动再次打开
    开发者模式开启后,debug开关会自动关闭在断开usb后的一段时间内,可以设置常开吗?
  • [其他问题] IdeaHub 开发者模式怎么设置常开?每次用着用着就关闭了,需要手动再次打开
    IdeaHub S2的开发者模式可以常开吗?每次用着用着就莫名关闭了,需要再次手动打开
  • [其他问题] IdeaHub设置霸屏应用可以用来做什么?
    将自己开发的应用透过HTTP API设置为霸屏应用后,霸屏应用可以用来做啥功能?我这边现在有一个需求需要在特定场景下打开我的APP(已通过接口设置为霸屏APP),现在这个霸屏APP可以透过 HTTP API在主动调起吗?
  • [视频类问题] 【FAQ --- 视频类问题】第三方调用大屏设置界面,点击摄像头后闪退问题
    现象:第三方调用大屏设置界面后,点击设置—摄像头,出现闪退问题。原因:如果直接使用startActivity( ) 调用大屏设置页面,再点击设置内的摄像头,会额外再启动一个Activity-摄像头 ,并且之前的Activity无法再回转,从而导致设置页面闪退。解决方法:建议直接使用startActivityForResult( ) 或 registerForActivityResult( )。示例:Intent(Settings.ACTION_SETTINGS);startActivityForResult(intent, 0); //requestCode>=0​
  • [白板SDK问题] 【FAQ --- 白板SDK问题】第三方集成白板SDK时,设置默认白板失效问题
    现象:第三方集成白板SDK,并且涉及多个Activty注册时,出现了无法将此应用设置为默认白板问题。原因:AndroidManifest里面注册的Activty,缺少白板必需的Action所致。解决方法:正确配置白板所需的四个Action,具体如下。1、com.device.action.WHITEBOARD_LOCAL此Action用于标识该应用为白板应用(白板运行所必需的主Action),用于创建白板实例,主要应用于三类场景:侧边栏标注时打开白板、在文件管理器中打开白板文件和在入驻式会议内共享白板。注:此Action需放在MainActivty内,否则也会导致无法将此应用设置为默认白板。<intent-filter> <action android:name="com.device.action.WHITEBOARD_LOCAL" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>2、com.device.action.WHITEBOARD_ANNOTATION侧边栏打开白板Action,用于在侧边栏标注时打开白板。<intent-filter> <action android:name="com.device.action.WHITEBOARD_ANNOTATION" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>3、android.intent.action.VIEW文件管理器打开白板Action,用于在文件管理器中打开白板文件。<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="application/cwb" /> <data android:scheme="content" /> </intent-filter>4、com.device.action.WHITEBOARD_SEND入驻式会议共享白板Action,用于在入驻式会议内共享白板。<intent-filter> <action android:name="com.device.action.WHITEBOARD_SEND" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>总结:第三方集成白板SDK,并且涉及多个Activty注册时,建议将白板运行所必需的主Action(com.device.action.WHITEBOARD_LOCAL)配置在MainActivty内,否则会导致白板应用无法识别到LOCAL,系统判定白板应用无法启动,从而使默认白板设置失效。 (经验证:其余三个必需的Action任意一个放于MainActivty内,也能解决默认白板设置失效问题,但会出现其余Action对应的白板场景调用报错,不符合期望)
  • [公告] 【会议SDK】隐私声明
    会议SDK是由华为技术有限公司(以下简称“我们”或“华为”)面向应用开发者(以下简称“开发者”)提供快速集成华为终端入驻式会议开放能力及服务。开发者根据会议SDK的开发文档和指南在其应用中集成了会议SDK后,我们将通过被集成的会议SDK向开发者的最终用户(以下简称“您”或“用户”)提供相关服务,处理开发者应用相关的数据,相关数据中可能包含您的个人信息。华为非常重视您的个人信息和隐私保护,我们将会按照法律要求和业界成熟的安全标准,为您的个人信息提供相应的安全保护措施。我们将通过本声明向开发者及您说明我们如何收集、使用、披露、保护、存储及传输您的个人信息。请注意:我们要求集成会议SDK的所有开发者严格遵循法律法规、《华为企业软件许可协议》和《会议SDK合规使用指南》的要求处理您的个人信息;在接入、使用各开放能力前,我们要求开发者在其产品应用的隐私政策中向您告知其集成SDK处理个人信息的基本情况,并获取您的同意或取得其他合法性基础。但我们无法控制开发者及其开发者应用如何处理开发者所控制的个人信息,也不对其行为负责。我们建议您认真阅读开发者应用相关用户协议及隐私政策,在确认充分了解并同意开发者如何处理您的个人信息后再使用开发者应用。1 我们如何收集和使用您的个人信息华为仅会根据本声明以下所述目的和方式收集和使用您的个人信息,如果我们要将收集的您的个人信息用于本声明未载明的其他目的,我们会以合理的方式自行或通过开发者明确向您告知,并再次获取您的同意或取得其他合法性基础。以下信息只在用户侧处理,会议SDK不会将信息传出用户的会议环境。会议呼叫表1-1 会议呼叫个人信息个人信息类型个人信息清单收集和使用目的存留期IP地址、SIP/H.323号码IP地址、SIP/H.323号码用于点对点或多点音视频会议不涉及存留期存留策略:日志超出最大条数后覆盖最旧条目恢复出厂设置后删除通话记录IP地址、SIP/H.323号码为用户提供最近历史通话信息不涉及存留期存留策略:用户可手动删除或清空超出最大通话记录条数后覆盖最旧条目恢复出厂设置后删除通讯录表1-2 通讯录个人信息个人信息类型个人信息清单收集和使用目的存留期通讯录姓名、部门、工号、email、手机号获取终端本地或者对接企业通讯录的通讯录信息,进行呼叫会议业务不涉及存留期存留策略:用户可手动删除网络通讯录在下一次查询时删除恢复出厂设置后删除会议音视频通话表1-3 会议音视频通话个人信息个人信息类型个人信息清单收集和使用目的存留期音视频信息摄像头采集,音频设备采集用于点对点或多点音视频会议不存储2 设备权限调用当您使用相应功能及服务时,我们会通过开发者应用向系统申请用户设备的相应权限。您可以在设备的设置功能或“隐私设置”中查看权限状态,并可自行选择开启或关闭部分或全部权限。开发者在集成、使用相应开放能力时,将自行决定权限的调用范围,因此开发者应对权限的调用及用途向您进行说明。您根据开发者应用的请求开启任一权限即代表授权我们可以处理相关个人信息来为您提供对应服务;一旦您关闭任一权限即代表您取消了授权,我们将不再基于对应权限继续处理相关个人信息,可能无法继续为您提供该权限所对应的服务。请注意,您关闭权限的决定不会影响此前基于您授权所进行的个人信息处理活动的效力。表2-1 会议SDK涉及的权限权限权限描述使用目的相机权限获取相机权限采集摄像头视频画面,用于入驻式会议视频会议麦克风权限获取麦克风权限采集麦克风音频内容,用于入驻式会议音频会议3 对未成年人的保护我们非常重视对未成年人个人信息的保护,华为将严格按照国家法律法规要求对未成年人提供服务并对未成年人提供保护。如果您是未成年人,需要您的父母或其他监护人同意您使用开发者应用并同意相关应用的服务条款。父母或其他监护人也应采取适当的预防措施来保护未成年人,包括监督其对开发者应用的使用。特别地,如果您是儿童(不满十四周岁的未成年人),在您使用开发者应用和我们的服务前,请务必通知您的父母或其他监护人一起仔细阅读开发者应用隐私声明,并在您的父母或其他监护人同意或指导后,使用开发者应用和我们的服务或向我们提供信息。如果您是儿童的父母或其他监护人,请确保您监护的儿童在您的同意或指导下使用开发者应用和我们的服务以及向我们提供信息。4 管理您的个人信息华为非常尊重您对个人信息的关注,我们将遵照相关法律法规的要求,协调、支持并保障您行使访问、复制、更正、删除等个人信息主体权利。由于您是通过开发者应用使用会议SDK和服务,如果您希望访问、复制或更正与会议SDK和服务相关的个人信息,您应通过开发者应用提供的路径实现您的个人信息主体权利。为保障您访问、复制、更正和删除个人信息的权利实现,我们在《华为企业软件许可协议》中,明确要求开发者承诺根据法律法规要求向您提供便捷的权利实现方式。同时,我们的开放能力也向开发者提供了相关的接口,支持开发者通过接口调用方式来执行您关于个人信息的访问、复制、更正和删除的权利请求。如开发者未按照承诺进行提供,您可以通过本声明“6 如何联系我们”章节中所述联系方式与我们取得联系,我们将尽力协调、支持并保障您的上述权利实现。当您直接向我们提出个人信息主体权利时,为了保障您的数据安全和其他合法权益,我们可能会对您的身份进行验证并要求您提供验证身份所必要的个人信息,同时我们也可能会向开发者提供收集的身份验证信息以核实您的身份。在验证确认您的身份后,我们会根据法律法规要求及时响应您的相关请求。如您对您的数据主体权利有进一步要求或存在任何疑问、意见或建议,可通过本声明中“6 如何联系我们”章节中所述方式与我们取得联系,并行使您的相关权利。5 信息存储地点及期限上述个人信息保存在终端本地,没有保存期限,由用户手工触发删除。6 如何联系我们我们指定了个人信息保护负责人,您可以通过访问隐私问题页面与其取得联系,我们会尽快回复。您也可以联系应用的开发者行使您的相关权利,我们在收到来自开发者的相关请求并验证请求的真实合法性后,会积极配合响应请求。公司注册地址:深圳市龙岗区坂田华为总部办公楼,华为技术有限公司。邮编:518129。如果您对我们的回复不满意,特别是当我们的个人信息处理行为损害了您的合法权益时,您还可以通过向有管辖权的人民法院提起诉讼、向行业自律协会或政府相关管理机构投诉等外部途径进行解决。您也可以向我们了解可能适用的相关投诉途径的信息。
  • [公告] 【白板设备SDK/能力开放】隐私声明
    【白板设备SDK】是由华为技术有限公司(以下简称“我们”或“华为”)面向应用开发者(以下简称“开发者”)提供基于终端设备的安卓平台,快速集成白板开放能力及服务。开发者根据【白板设备SDK】的开发文档和指南在其应用中集成了【白板设备SDK】后,我们将通过被集成的【白板设备SDK】向开发者的最终用户(以下简称“您”或“用户”)提供相关服务,处理开发者应用相关的数据,相关数据中可能包含您的个人信息。华为非常重视您的个人信息和隐私保护,我们将会按照法律要求和业界成熟的安全标准,为您的个人信息提供相应的安全保护措施。我们将通过本声明向开发者及您说明我们如何收集、使用、披露、保护、存储及传输您的个人信息。有关开发者个人信息的处理情况,请另行参阅关于华为开发者联盟与隐私的声明。请注意:我们要求集成【白板设备SDK】的所有开发者严格遵循法律法规、《华为企业软件许可协议》和开发文档和指南的要求处理用户的个人信息;在接入、使用各开放能力前,我们要求开发者在其产品应用的隐私政策中向用户告知其集成SDK处理个人信息的基本情况,并获取用户的同意或取得其他合法性基础。但我们无法控制开发者及其开发者应用如何处理开发者所控制的用户个人信息,也不对其行为负责。我们建议您认真阅读开发者应用相关用户协议及隐私政策,在确认充分了解并同意开发者如何处理用户的个人信息后再使用开发者应用。 1. 我们如何收集和使用您的个人信息为了向开发者及其用户提供各开放能力和服务,我们将遵循合法、正当、必要和诚信的原则收集、使用用户的个人信息。华为仅会根据本声明以下所述目的和方式收集和使用您的个人信息,如果我们要将收集的您的个人信息用于本声明未载明的其他目的,我们会以合理的方式自行或通过开发者明确向您告知,并再次获取您的同意或取得其他合法性基础。(1)为了向开发者及其用户提供各开放能力和服务个人信息类型个人信息清单收集和使用目的存留期应用信息白板文件主要用于白板扫码带走和邮件分享:在激活IdeaManager组网下,用户选择扫码模式后,扫码保存白板内容图片,或者发送邮件;在激活云组网下,用户选择扫码模式后,扫码二维码,保存白板文件,或者发送邮件;用户选择浏览器扫码模式,扫码保存白板文件;用户选择第三方扫码模式,配置第三方扫码服务器地址、用户名和密码后,扫码保存白板文件。第三方使用白板文件实现的业务,由第三方决定。终端从服务器获取二维码,二维码20钟后会失效,同时终端通知IdeaManager删除上传的白板文件。关闭白板二维码窗口时,终端通知IdeaManager删除上传的白板文件;OBS平台服务器30天后自动删除;OneBox平台服务器30天后自动删除;终端生成二维码,二维码15钟后会失效,同时删除缓存的白板文件。关闭白板二维码窗口时,删除缓存的白板文件;第三方扫码模式由第三方服务器决定。个人信息收件人的Email地址和白板文件用于将白板文件发送邮件不保存数据,调用邮件服务接口后删除设备信息终端的IP地址用于拼接生成浏览器扫码保存的网页访问地址,生成二维码不保存数据,使用后删除2. 设备权限调用当您使用相应功能及服务时,我们会通过开发者应用向系统申请用户设备的相应权限。您可以在设备的设置功能或“隐私设置”中查看权限状态,并可自行选择开启或关闭部分或全部权限。开发者在集成、使用相应开放能力时,将自行决定权限的调用范围,因此开发者应对权限的调用及用途向您进行说明。您根据开发者应用的请求开启任一权限即代表授权我们可以处理相关个人信息来为您提供对应服务;一旦您关闭任一权限即代表您取消了授权,我们将不再基于对应权限继续处理相关个人信息,可能无法继续为您提供该权限所对应的服务。请注意,您关闭权限的决定不会影响此前基于您授权所进行的个人信息处理活动的效力。权限权限描述使用目的存储获取存储读写权限用于保存白板文件3. 对未成年人的保护我们非常重视对未成年人个人信息的保护,华为将严格按照国家法律法规要求对未成年人提供服务并对未成年人提供保护。如果您是未成年人,需要您的父母或其他监护人同意您使用开发者应用并同意相关应用的服务条款。父母或其他监护人也应采取适当的预防措施来保护未成年人,包括监督其对开发者应用的使用。特别地,如果您是儿童(不满十四周岁的未成年人),在您使用开发者应用和我们的服务前,请务必通知您的父母或其他监护人一起仔细阅读开发者应用隐私声明、本声明以及我们专门制定的《华为消费者业务儿童隐私保护声明》,并在您的父母或其他监护人同意或指导后,使用开发者应用和我们的服务或向我们提供信息。如果您是儿童的父母或其他监护人,请确保您监护的儿童在您的同意或指导下使用开发者应用和我们的服务以及向我们提供信息。 4. 我们对开发者的要求(1)开发者的告知义务我们要求开发者承诺在其接入、使用白板设备SDK和/或服务前,向用户告知我们SDK的名称、SDK提供方名称、收集个人信息类型、使用目的、隐私政策链接,并获取用户的同意或取得其他合法性基础。开发者应当参考如下方式提供条款内容:以文字方式向用户告知第三方SDK名称:白板设备SDK第三方名称:华为技术有限公司收集个人信息类型:个人信息、应用信息、设备信息使用目的:为开发者应用提供扫码带走和邮件分享服务隐私政策链接:https://bbs.huaweicloud.com/forum/thread-02115120396120929063-1-1.html?fid=1151  以表格方式向用户告知第三方SDK名称第三方名称收集个人信息类型使用目的隐私政策链接白板设备SDK华为技术有限公司个人信息、应用信息、设备信息为开发者应用提供扫码带走和邮件分享服务https://bbs.huaweicloud.com/forum/thread-02115120396120929063-1-1.html?fid=1151(2)SDK延迟初始化为了避免开发者的应用在未获取您的同意前,SDK提前启动收集使用您的个人信息。白板设备SDK提供了初始化接口create,要求开发者的应用获取您的同意后才能调用此接口初始化SDK。(3)SDK版本更新声明为了向开发者提供最新的、安全的服务,我们会不时更新SDK版本。我们强烈建议开发者集成使用最新版本的SDK并向开发者提供下载链接。5. 管理您的个人信息华为非常尊重您对个人信息的关注,我们将遵照相关法律法规的要求,协调、支持并保障您行使访问、复制、更正、删除等个人信息主体权利。由于您是通过开发者应用使用白板设备SDK和服务,如果您希望访问、复制或更正与白板设备SDK和服务相关的个人信息,您应通过开发者应用提供的路径实现您的个人信息主体权利。 为保障您访问、复制、更正和删除个人信息的权利实现,我们在与开发者的协议中,明确要求开发者承诺根据法律法规要求向用户提供便捷的权利实现方式。同时,我们的开放能力也向开发者提供了相关的接口,支持开发者通过接口调用方式来执行用户关于个人信息的访问、复制、更正和删除的权利请求。如开发者未按照承诺进行提供,您可以通过本声明“如何联系我们”章节中所述联系方式与我们取得联系,我们将尽力协调、支持并保障您的上述权利实现。当您直接向我们提出个人信息主体权利时,为了保障您的数据安全和其他合法权益,我们可能会对您的身份进行验证并要求您提供验证身份所必要的个人信息,同时我们也可能会向开发者提供收集的身份验证信息以核实您的身份。在验证确认您的身份后,我们会根据法律法规要求及时响应您的相关请求。如您对您的数据主体权利有进一步要求或存在任何疑问、意见或建议,可通过本声明中“如何联系我们”章节中所述方式与我们取得联系,并行使您的相关权利。6. 信息存储地点及期限如果使用云服务(华为云,welink云,微信)进行扫码带走,上述信息将会传输并保存至中华人民共和国境内的服务器。如果使用华为云国际站,上述信息将保存到中国HK或设备所在地的服务器(详见华为云国际站隐私声明)。我们仅在实现本声明所述目的所必需的时间内保留您的个人信息,并在超出下述保留时间后删除或匿名化处理您的个人信息,除非法律法规另有要求。个人信息类型个人信息清单存留期应用信息白板文件IdeaManager组网扫码:终端从服务器获取二维码,二维码20钟后会失效,同时终端通知IdeaManager删除上传的白板文件。关闭白板二维码窗口时,终端通知IdeaManager删除上传的白板文件;云组网扫码:OBS平台服务器30天后自动删除;OneBox平台服务器30天后自动删除;浏览器扫码:终端生成二维码,二维码15钟后会失效,同时删除缓存的白板文件。关闭白板二维码窗口时,删除缓存的白板文件;第三方扫码:第三方扫码模式由第三方服务器决定。个人信息收件人的Email地址和白板文件不保存数据,调用邮件服务接口后删除设备信息终端的IP地址不保存数据,使用后删除此外,当我们的产品或服务发生停止运营的情形时,我们将以推送通知、公告等形式通知您,并在合理的期限内删除您的个人信息或进行匿名化处理。7. 如何联系我们我们指定了个人信息保护负责人,您可以通过此链接联系个人信息保护负责人。您可以通过访问隐私问题页面与其取得联系,我们会尽快回复。您也可以联系应用的开发者行使您的相关权利,我们在收到来自开发者的相关请求并验证请求的真实合法性后,会积极配合响应请求。如果您对我们的回复不满意,特别是当我们的个人信息处理行为损害了您的合法权益时,您还可以通过向有管辖权的人民法院提起诉讼、向行业自律协会或政府相关管理机构投诉等外部途径进行解决。您也可以向我们了解可能适用的相关投诉途径的信息。        华为将始终遵照我们的隐私政策来收集和使用您的信息。有关我们的隐私政策,可参阅华为消费者业务隐私声明。