【Android】关于 Android 获取图片权限的“二三事”
前言
开发 APP 的过程中有个更改用户头像的功能,当时做完后在真机上自测了几遍都能顺利流畅的更换头像,结果在其它开发同事手机上发现一直提示无权限打开相册,但是我这边的测试机又是好的,确认了代码同步、版本一致后,打了个包让其它同事帮忙测试,发现反映的情况各不同,有的能正常打开相册、甚至相机,但有的如果相册打不开的情况下,相机也是一样的问题:提示无权限,我立马查看对应的手机设置里对应的原生权限是否有开启,再三确认已经开启无误后,我是一点都摸不着头脑,这 Bug 是整哪一出?随即,我开始搜索相关问题的篇幅,不停的翻阅 Andriod 官方文档和相关插件 issues,功夫不负有心人,这虫终于让我给揪出来了。
问题:在不同安卓机型上出现,已知的有小米、oppo、荣耀、华为。
开始我一直以为是不同品牌的问题(并不是,因为在后续中发现相同品牌的也会出现这个问题)
描述:更换头像选择图片库或者相机的时候会有权限获取问题,有的失败、有的成功。相关代码如下:
12345678910111213// 使用的是expo官方的import * as ImagePicker from "expo ...
【ReactNative】在React native中使用路由的疑惑
在工作中因为业务需求接触到了 React native,是一个已经有功能的迭代版本 APP,在开发新模块的时候,在涉及到路由跳转的时候遇到了些许问题,发现分为页面栈和选项导航卡页面栈。
StackNavigator
顾名思义就是堆栈式导航的意思,但是此页面栈子页面可嵌套子页面,实现多层级嵌套路由的跳转。里面有多种跳转方式,例如:navigate、push,秉承着“先进后出”、“后进先出”的原则,从当前页面跳转到目标页面,是将目标页面压入栈顶。
push
从当前页面跳转到目标页面,将目标页面压入栈顶,每次调用就算该页面已经存在,都会向栈内添加一个新页面。
navigate
在栈内没有某目标页面存在的情况下,使用 push 或者 navigate 都可以正常跳转,但是如果栈内存在目标页面的时候,navigate 则会失效,但也不会报错。
如果从 A 页面->B 页面->C 页面这样的跳转顺序,在 C 页面使用 navigate 跳转到 A 页面的话,则 A 以上的页面都会从栈内被取出,相当于 popToTop,从 C 页面返回到了 A 页面。
po ...
【RabbitMQ】认识RabbitMQ
前言
在工作中遇到一个需要基于 NodeJs 做一个业务工具的实现。在这个过程中遇到了需要运用 RabbitMQ 的地方,当时挺懵的,前端的技术文档、博客貌似都没有提过这个呀,在这个契机下我开始认识“RabbitMQ”这个新朋友哈哈。
什么是 RabbitMQ? 翻阅了很多资料,发现这个偏后端一点,在我理解下,RabbitMQ 相当于一个“中介”或者是一个“快递站”,在这里面,你可以寄快递也可以收快递,对应的角色也就是商家和消费者,消费者“下单”订阅了某样物品,商家可能立马就能“发货”,也有可能因为缺货导致隔了好几天货到了再进行发货。如果有一个以上批量货物的话,也只能一个接一个的发货,并且根据到货时间遵循着”先到货的先发货“,消费者在接到货物后可能会有反馈,比如五星好评、退货退款等,这时候消费者也是通过 RabbitMQ 来跟商家进行沟通、发送对应的信息。
Rabbit 里面包含了交换机、路由键等,交换机通过指定对应的路由键将”货物“或”反馈消息“分类并添加到对应的队列中,消费者也是会在订阅的时候进行路由键等的绑定,获取在对应队列中的”货物“或”反馈消息“。
RabbitMQ ...
【NodeJs】NodeJs实现网页截图与环境数据写入,使用ncc与pm2优化构建与部署
因为工作原因接触到了 Node,与之前练习的 Demo 不同,此次 Node 项目不是单纯的进行接口编写,更加准确的来说是一个自动化工具,里面包含了公司自己的业务网站截图、获取当前用户的环境信息:当前用户操作的系统信息、时间、文件 hash 等,不走常规接口路由,而是通过 Rabbitmq 消息中间件进行监听和发送数据进行一系列动作。
node 环境准备
node 版本选择的是 LTS 版本的16.18.1
PM2 的安装
一般需要运行 js 文件,在终端输入对应的命令则可,例:node xxx.js,如果需要额外加自定义参数的话,则需要在 package.json 文件的 scripts 对象中编写对应的key、value格式的命令。但是这些方法有以下缺陷:
1、窗口关闭后服务自动停止。
2、文件变化后需要手动重启。
这时候我们则可使用 pm2 进行进程守护、监听文件变化自动重启项目。
123456789101112// pnpm 全局安装PM2(注:yarn|npm|pnpm 都可以,只是包管理选择而已)pnpm add pm2 -g// 检查是否安装成功pm2 -v/ ...
【十一月】允许一切发生
今天的天气跟现在的心情一样,灰蒙蒙、看见光不透光。允许一切发生,一直在心里默念着。今日一回想,最勇敢的时候居然是一无所有的时候。我相信现身处低谷,但今后每一步都往上走。我虽身处阴沟,仍仰望星空。谢谢我的朋友们,我亲爱的朋友们。
【nuxt SSR】框架搭建、踩坑记录
Nuxtssr前段时间主负责了一个项目,是一个官网加配置官网展示数据的管理后台,因为产品敲黑板特地的强调了官网seo的重要性,因为之前从来没做过官网,特别是强seo的网页;找前端各大佬帮忙、一起讨论后,最终采用nuxt2.x+vue2+ts技术方案。开始压力还是大大的,再踩了无数个坑之后,终于要上线了,想了想赶紧记录下来,避免以后忘记。nuxt.config
mode改为’universal’。模式选择-SPA/Universal(告诉服务器为ssr渲染)
由于是第三方渲染,如果使用了第三方插件,默认ssr项为true,需要手动更改。否则启动项目页面会变成 document is no defined 。
123456789101112131415plugins: [ 'antd-ui', 'antv-g2plot', 'api', 'inject', 'axios', 'antd/icons', 'vue/component ...
【四月】还愿
还愿2011-2014年QQ空间还流行的时候(不是广告),我就特别喜欢花里胡哨的装扮自己的空间,什么背景音乐、漂浮的小玩意、闪亮特别的标签栏等等,当然那时候很多东西都需要付钱:特别是好看的。那时候学生也没钱,只能望眼欲穿。当然那时候我也没放弃,咱们正的不行,歪的也不是不行(**人生就不要走歪路了(。ì _ í。)**),就去网上搜啊搜,嘿,还真让我搜着了,就类似以下图片中的方法:
那时候我并不知道图片上的是什么,就知道是一些乱码,现在回头一看,这不是熟悉的html、css代码吗?哈哈哈哈,所以爱好是从小养成的,后来,就愈发想要以自己名字命名属于自己的网站,自己做装饰,想怎么变怎么变,也不需要花钱冲黄钻(srds,服务器、域名、cdn、流量都比黄钻贵不少),在博客里面放满自己的照片(srds,qq空间也可以),但是意义还是不一样的。
在此过程中,我花费了不少时间、精力,从搭建博客——>配置博客——>写博客——>静态部署到github——>租购域名——>备案——>租购云服务器——>配置云服务器——>配置环境——>本地自动部署到云服务器 ...
【移动端】postcss-pxtorem搭配监听resize事件实现各机型自适应
首先配置rem(vue2.6.11、vue-cli4x版本的环境):
安装 postcss-pxtorem
npm i postcss-pxtorem
打开vue.config.js文件
1234567891011// 滑到css相关配置地方loaderOptions:{ postcss:{ require('postcss-pxtorem')({ rootValue: 16, //根大小 minPixelValue: 2, propList: ['*'] }) ] }}
创建一个rem.js
123456789101112131415// 基准大小const baseSize = 32// 设置 rem 函数function setRem () { // 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。 const scale = d ...
【uniapp】 uniApp框架搭建
uniApp框架搭建(基于vue2)前言 这一年对自己挑战性还是很大的,接触了小程序、低代码平台搭建、微信公众号h5页面,成长了许多,但因为忙一直没时间记录,现在年末有时间抽空码码字了, 下面我将把我第一次搭建uniapp框架的经验记录下来,以后可能会慢慢优化。
1、安装uniapp1.1 首先安装vue-cli环境,如已安装则可跳过此步骤
1$npm install -g @vue/cli
1.2 使用命令创建uniapp模板(正式版)
1$vue create -p dcloudio/uni-preset-vue my-project
2、安装UI库本项目采用的是 uView UI库,舍弃npm安装方式,用源码导入方式,方便改动https://ext.dcloud.net.cn/plugin?id=6682进入网页点击插件下载,一般解压到src路径下。
2.1 uView依赖SCSS,所以必须安装此插件,否则无法正常运行。vue-cli命令安装的务必安装。推荐使用yarn
12345 // 安装node-sass npm i node-sass -D// 安装sass- ...
【管理后台】点击按钮将里面的文字填充到输入框,适用于单个【进阶版】
前言感谢雪芹美女提供的素材~
点击按钮进行变量填充其实挺常见的,不同业务也有不同的差异,比如这版本的话,选择了的变量则不嫩选择变成置灰,如果在输入框手动删除此变量,则重新放开此变量的选择,以下是完成后的效果:
基于 vue2 和 elementUI1、准备两个变量按钮1234567<el-button v-for="(item, index) in buttonArr" :disabled="item.sel" @click="joinString(item)" :key="index" >{{ item.name }}</el-button>
1234567891011121314151617buttonArr: [ { key: '1', name: 'baba1', val: '叫爸爸' ...