惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
美团技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
月光博客
月光博客
宝玉的分享
宝玉的分享
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
J
Java Code Geeks
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
Vercel News
Vercel News
博客园 - 聂微东

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
借助 Automate 来收藏文章,可能是 Android 上最快的方式 - ...
2019-07-04 · via 少数派

Matrix 精选

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


试想一下这样的情景:

  1. 夜里,你不想让手机上的通知惊扰了你的美梦,那你可以设置一个「每天晚上十二点关闭声音,每天早上八点钟开启声音」这样一个简单的命令。
  2. 经常走着走着就没有 Wi-Fi,切换到数据流量却没有察觉?经常连上了 Wi-Fi 却不能很方便地查看连的是哪一个?有了 Automate,它可以在切换时弹出浮窗提醒你。
  3. 想要把读到的文章收藏到 Pinboard 或者 Instapaper 中时,Automate 可以让「收藏」这一动作显得非常优雅:只需要复制下链接,文章即可自动保存到书签网站。
  4. 出门没有带手机,临时要用验证码怎么办?如果在 Automate 中配好了「收到短信时自动同步到 IM 应用」,你直接就可以在电脑上查看短信了。
  5. 满屋子找不到手机,却又开了静音模式?只要发送一条特定内容的短信「你在哪里」,Automate 识别之后会把你的手机音量开到最大,然后开始发出铃音。

第一次见到上述流程,很多人可能都会觉得看上去「很酷」。自动化一直是玩机社区乐此不疲的话题,在 iOS 上我们有捷径和捷径社区,在 Android 上很多人也许会想到 Tasker —— 那个每每下载安装决定大干一场,却往往都无疾而终「从入门到放弃」的传奇应用。

其实 Android 上的自动化可以不用这么难,选择也远非 Tasker 这一种。

Automate 是我自己在用的方案,功能方面它不输 Tasker,可视化流程则有效降低了自己动手操作的门槛。

诚如它的名字所言,Automate 想要让你的 Android 设备「自动化」地完成任务。为了实现这个小目标,Automate 拥有各种各样的能力,它既可以充分调用 Android 设备的传感器和其他硬件,也可以直接监听并控制系统中的设置与事件。

Automate 的能力、配置和流程

上面左图展示了 Automate 中的一些模块,中图是「调整音量」模块的配置,右图则是流程的表现形式。

Automate 采用类似「流程图」的编写方式,可谓「所见即所得」。根据自己构想,选取合适的功能模块,按顺序排好,并进行简单的配置,一个自动化流程就完成了。

下图展示了前面所说的第 5 种情景,使用短信来寻找手机。可以看到,我一共使用了 6 个模块就完成了这项工作。这个流程非常便于理解:首先接收 SMS 短信,如果包含「你在哪里」就取消静音、调高音量到 100、播放声音文件。就这么简单。

「我在这里」的流程

最佳实践——快速收藏文章

为了进一步展示 Automate 的实力,除了上面提到的「找手机」,这里我们不妨再思考另一个需求:如何收纳你曾阅读的网页、文章,如何更加方便地「点击即收藏」,把它们归于一处?

作为 Android 上最好用的自动化工具之一,Automate 以十分清晰的「流程图」方式,为我们方便而快速地「收藏文章」提供了极好的解决方案。

挑选书签托管服务

首先我们要解决的「收藏放哪里」的问题。

书签管理的方式有很多,用 IE 的时候,我们就有「收藏夹」的说法;但我要是想换一台电脑,收藏夹迁移就变得很麻烦,于是许多浏览器又有了「账户同步」的功能。不过说来说去,浏览器书签操作方便,在同步、展示、整理等方面还是比较局限。

我们不妨看看现目前比较流行的几个在线书签服务:成都的 Diigo 一直面向海外客户,年费 40 刀,不仅可以存档网页,还可以进行批注;Pinboard 极简的网页设计吸引了非常多的用户,目前基础年费 11 刀,也可以花 20 刀来保存网页正文。

一众「稍后阅读」服务则从另一个角度提供了解决方案。

PocketInstapaper 都支持自动获取网页全文,并可以在手机上离线下载,这一方面在流量费用昂贵的当年为「刷手机」提供了便利,另一方面由于读过的网页会一直保留,它们也逐渐成为许多人保存网页的工具,而更多的人把网页丢进「稍后阅读」,结果就「再也不读」了。

EvernoteOnenote 等笔记服务似乎可以算作独辟蹊径了,它们纷纷推出了全平台的浏览器插件,剪辑网页正文并保存下来,这件事反而成为了很多人使用笔记服务的最大用途。

准备基于 HTTP 的 API 接口

要实现自动化,一套可供调用的 API 也是必不可少的。Diigo、Pinboard、Pocket 和 Instapaper 都有比较完善的 API 可供调用,并且都只需要借助 HTTP 来实现,非常方便。

我们今天以 Instapaper 为例:它的 API 分成 简单版完整版 两套,如果只是需要「添加书签」,使用简单版足矣。具体而言,当需要收藏一个书签时,我们可以直接调用如下的 URL:

https://www.instapaper.com/api/add

这个 API 通过 POST 方法使用,消息体包含两个参数:

  1. url,也就是需要收藏的文章地址,必须填写
  2. title,可选,用来指定文章的标题,如果没有指定,那么 Instapaper 会自动去爬取文章标题

同时,为了表明身份,我们会加入一段验证,通过 HTTP 头传入我们的账户名称和密码。

总体设计:三纵合一

在 Automate 中最终编辑完成的工作流大概长这样:

Automate 工作流

这里一共有三个入口,也就是三个「Flow beginning」,不过经过处理之后,最终汇集到同一个分支流中,这个分支流的主要功能是向服务器发出请求并处理应答。

这三个入口分别处理:

  1. 直接剪贴板内容匹配触发
  2. 通过下拉通知栏触发
  3. 通过系统分享菜单触发

新建一个工作流

安装好 Automate 后,点击主界面右上角的加号,新建一个工作流。在工作流编辑界面,点击左上角的菜单可以打开所有结点的列表来供选择,

当然,一般使用「搜索」的方式来找结点……结点归类很迷,不大好找。

新建

第一纵:复制即保存

这个入口我在 Android 上用得非常频繁。在 iPhone 上使用 Workflow 时,由于不能后台监控剪贴板,所以无法实现。

而在 Android 这里最终实现的效果是,当我在少数派 App 的分享中选择「复制链接」之后,文章就直接保存了

剪贴板直接保存

主要的入口部分代码是:

剪贴板保存的入口

结点 17 指示了当前工作流的一个入口。为了便于后面代码的复用,入口是可以设置多个的,启动时可以选择其中一个或者多个入口。

每一个入口都可以设置名称,方便识别,也可以指定桌面快捷方式直接启动。

结点 18 用于等待剪贴板的修改事件

在 Automate 中,结点一般分为两类,一类是立即执行的,一类是由监听事件触发的。事实上,同一个结点往往兼具了这两种形式。比如这个剪贴板的结点,既可以立即获取当前剪贴板内容并执行下去,也可以设定成在剪贴板发生变化的时候才执行

涉及到输出时,我们可以直接指定一个变量,输出会自动赋值给这个变量。

结点 17-18

这里我们启动名为「copy」的入口之后,就开启对剪贴板修改时间的监听。如果剪贴板发生了改变,那么把修改后的剪贴板内容放入到名为「shared_text」的变量中,并启动一个新的分支流,来判断是否需要保存这个书签。

结点 20 启动了一个新的分支流,NEW 出来的分支流会独立执行,OK 引出的线条会在启动分支流之后立即执行下去,这样相当于开启了同时执行的父子两个流。

结点 21 采用正则表达式判断剪贴板中是否包含了我们所需的网址。我这里以少数派、知乎和微信公众号为例,具体的格式可以先查看每个应用分享出来的网址。

在结点 21 中,我使用了 match 函数 来判断字符串是否匹配。这个函数的原型为:

array matches(value, regex)

在正则式的开头可以设置标识位,来指定正则式的执行方式。这里 (?ms) 可以理解成对多行文本的适应,因为很多应用复制出来的链接并不只是一个网址,而会带着文章的摘要。

具体标识位的用法可以看 官网文档

结点 20-21

至此,通过复制直接保存书签的前置工作就完成了,现在书签地址保存在 shared_text 变量中,供之后的网络请求来调用。

第二纵:灵活的下拉菜单按钮

由于不可能对剪贴板中的所有地址都直接保存,这时我们就需要好好利用下拉菜单中的快捷开关了。基本的原理是:先把网址复制到剪贴板中,然后触发这个工作流,令其读取剪贴板并保存书签

下拉菜单按钮保存剪贴板中的网址

入口部分的代码是:

下拉菜单的入口

结点 8 是入口结点,取名为「clipboard」。结点 16 配置了一个下拉菜单按钮。

自定义下拉菜单按钮的功能是在 Android 7 的时候引入的,不过时至今日也没有多少应用支持。配置完之后,需要手动去下拉菜单的「编辑」选项中把这个按钮激活。

结点 9 选择了「立即」获取剪贴板内容,并同样把网址放到 shared_text 变量中。

结点 10 创建了一个新的分支流,并循环回结点 16,等待下拉菜单按钮点击事件再次触发。

结点 8-16-9-10

和前面一个入口一样,这里也为下一步网络请求提供了保存于 shared_text 变量中的一个地址。

第三纵:直接走系统分享菜单

最后,系统分享菜单其实也是一个不可或缺的入口。

不过需要注意的是,现在 Android 应用很多都会采用一套自己的分享菜单实现,比如少数派的 App 会在点击「更多」后触发系统分享菜单,而像微信公众号则根本不允许调用系统分享菜单,只能在它自己适配的几个分享选项中选择。

系统分享的效果如下:

分享菜单中保存文章

入口代码也非常简单:

分享菜单的入口

结点 1 和 7 自不必说,结点 2 配置了一个系统分享菜单的选项,并指定了在分享内容为文本时显示

结点 1-2-7

系统分享的第一个选项 TITLE 可以指定在分享时的菜单中显示的提示语。同样的,分享获得的文本内容会保存到 shared_text 变量中。

合一:网络请求和应答处理

现在前面三个入口都使用了一个 shared_text 变量,并都通过「Fork」结点引出了一个新的分支流。

网络请求是所有分支都合用的部分,代码如下:

网络处理部分的流

别看我排成了 3 列,其他它可以看成一个非常简洁的单线顺序结构。入口是中间的 22 号结点,为了可能出现的网络异常,我这里做了个异常捕获,

要是抛出异常,可以自动重试三次。失败了会在结点 23 中打印信息,然后在结点 3 中重新发起网络请求。

结点 23 用于调用系统的 Toast 接口来显示信息,Automate 中字符串的组合符号用的是 ++ 两个加号。

结点 22-23

结点 3 用于网络请求,网址、请求方法和请求体都根据 API 来填。这个结点支持 HTTP BASIC AUTH,添加用户名和密码后会保存到系统账户中,并可以在多个 Automate 脚本中共享。

结点 3

最后输出的是应答码和应答体,分别保存到一个变量中。

收到的数据类似这样:

{"bookmark_id": 1209375694}

结果显示了一个书签编号,通过 https://www.instapaper.com/read/1209375694 可以直接访问到所保存的页面。

把结果使用 jsonDecode 函数 进行解析,并把 bookmark_id 的值保存下来,分别用于日志记录和屏幕提示。

结点 5-6-4

结点 5 用于设置变量,这个结点比较有趣,输出在前,输入在后,大概是为了满足「赋值」这个概念,与一般的编程语言相仿。

结点 6 会调用 Automate 的日志,记录后方便查阅。结点 4 依然是一个 Toast 结点,用于在屏幕上显示简单的提示文本。

大功告成

好,现在可以保存编辑后的流,回退一步到流的设置页面,点击「Start」按钮。

如果没有获取到全部结点所需的权限,那么此时会弹出请求,选择「Grant」后,应用会唤起 Google Play 来安装相应的权限插件(Automate 的权限以插件的形式提供,一个新的权限就是安装一个应用,移除一个权限就是把它卸载掉)。

安装完成后再回来点击「Start」按钮,就可以看到入口的选择菜单了,这时我们可以选择需要激活的入口,或者直接点击「All」激活全部入口。

赋予权限

现在,就可以使用前面所说的三种入口,分别来试一试啦。

小结

Automate 作为一款功能强大的自动化工具,需要的权限较多,并且需要我们在系统中进行设置来让它们保持运行,如果你在国内厂商的定制 ROM 上遇到问题,不妨按照少数派的 文章 进行排查。

Automate 提供免费下载使用、没有广告,我非常建议从 Google Play 上下载 官方版本的应用,如果你觉得好用,还可以通过 2.99 美元的内购移除 30 个结点的限制。

> 下载少数派 客户端、关注 少数派公众号,发现更多实用效率技巧 😃

> 特惠、好用的硬件产品,尽在 少数派 sspai 官方店铺 🛒