记账总是半途而废?用 Tasker + 钱迹实现自动记账

栏目: IT技术 · 发布时间: 4年前

内容简介:Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。文章代表作者个人观点,少数派仅对标题和排版略作修改。继上次

Matrix 精选

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

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

继上次 通过 Tasker 和通知实现机器人 之后,决定利用 Tasker 做一些更有效率的事情、解决实际使用手机中的一些痛点。

思来想去,我有一个经常重复的操作是每次支付完都会使用钱迹进行记账,具体步骤无非是「回到桌面 > 打开钱迹/钱迹微件 > 输入金额 > 选择分类 > 记账完成」。

可是我观察到几乎每次支付之后,支付宝或其他 App 都会生成一个支付成功或者订单生成的通知。那么利用这个通知事件, 自动打开 钱迹或者其他记账应用来记账是一个很直接和容易实现的想法。另外钱迹刚好实现了 Deeplink(深度链接)的接口 1 2 ,能够比较方便地进行自动化记账的操作。

这里把通知分为两类,其中类似支付宝比较良心地在通知文本里面提供了金额,这样我们就可以把通过正则匹配出来,直接通过钱迹的接口,一般来说只需要选择分类再点击就可以记账了;如果没有提供金额的,那么就直接打开记账页面进行手动记账。

另外本文不会像上次一样需要较多的插件和第三方应用来实现效果。

记账总是半途而废?用 Tasker + 钱迹实现自动记账

通知触发 Intent

首先我们从简单的开始,我们希望某个通知产生的时候,能够自动打开钱迹「记账」页面,从而减少打开某个应用内界面的操作。这里一是 通知事件 作为触发,二是 发送 Intent 来打开指定页面的操作。

记账总是半途而废?用 Tasker + 钱迹实现自动记账

复习通知事件

如果之前接触过 Tasker 并且阅读了上一篇利用通知自动回复微信的文章,应该对 Tasker 的通知事件比较熟悉了。这里我们稍微复习一下通知事件在 Tasker 里的事件参数(Event Context)。

记账总是半途而废?用 Tasker + 钱迹实现自动记账
%evtprm1
%evtprm2
%evtprm3

当然在第一个例子里面不需要这么复杂,Tasker 自带的通知事件可以针对应用和标题进行过滤,这里已经足够我们使用了。

比如这里我们完整匹配了来自饿了么的标题为「您的订单已接单」的通知。关于 Tasker 的模式匹配,可以参考官方文档 3 。可以简单提一下如果没有特殊符号表示完全匹配, *text* 会匹配任意带 text 的文本, / 表示或,应该能满足大部分的简单的使用场景了。

记账总是半途而废?用 Tasker + 钱迹实现自动记账

发送 Intent

设置好触发条件之后,那么就可以执行打开页面的操作。这里使用「发送意图」的动作。

com.mutangtech.qianji
com.mutangtech.qianji.bill.add.AddBillActivity
记账总是半途而废?用 Tasker + 钱迹实现自动记账

这里有聪明的小伙伴就会想知道这两个东西怎么得到的。包名比较好找,Activity 名只需要打开相应的页面,手机连接电脑之后执行下面的命令,就可以得到最新打开的 Activity 名称是什么,当然也可以从中知道包名是什么。

adb shell dumpsys activity recents | find "Recent #0"

试试把 | 的命令去掉,终端会把最近的 Activty 栈全打印出来。掌握了这个命令,就可以通过 Tasker 启动几乎任何你想要的页面,也不用采用其他插件。当然如果你想用 IntentTask 这类 Tasker 插件来简化这部分操作,也是可以的,它们只是帮你完成了这一步。

通知触发 Deeplink

接下来我们再稍微加深一点难度,毕竟上面的内容只是帮你节省了打开页面操作的时间,还需要手动输入金额,而输金额很麻烦。当通知里面带有金额的时候,要完成自动记账也不是难事。正好钱迹提供了 Deeplink 供自动化记账使用。

Deeplink 简介

根据官方文档,Deeplink 可以描述如下:

深层链接是指将用户直接转到应用中的特定内容的网址。在 Android 中,您可以通过添加 intent 过滤器以及从传入的 intent 提取数据来设置深层链接,以便将用户吸引到正确的 Activity。

在平时使用过程中,其实我们接触还挺多的,最常见的是「在 App 中打开」之类的按钮,或者各种从一个应用跳转到另一个应用某页面的按钮。简单来说,Deeplink 的 URL 里面带有页面所需要的参数,可以被应用正确处理打开页面的同时传一定的信息进去。

钱迹接口

钱迹的接口文档写得比较完善了,大家可以直接看[1]。简单提一下,就是需要拼出一个这样的 URL,然后进行访问就能直接执行钱迹提供的功能:

  • 固定前缀为 qianji://publicapi/addbill?
  • 必须参数账单类型 type ,比如 &type=0 表示支出;账单金额 money
  • 其他非必须参数比如 catechoose ,等于1表示弹出选择分类面板

操作逻辑

如图实现这样的逻辑:

  • %BALANCE 变量匹配出通知文本 %evtprm3 中的数字,这里抄了一个金额的正则表达式 ([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})? ,网上有很多,大家自己取舍。
  • 如果匹配到了,即 If %BALANCE1 Set ,则通过构建 URL 来传入金额打开钱迹的分类选择面板,URL 为 qianji://publicapi/addbill?&type=0&catechoose=1&money=%BALANCE1
  • 如果没有匹配到,则打开记账的 Activity,正如前面所述一样发送意图。
记账总是半途而废?用 Tasker + 钱迹实现自动记账

效果展示

因为每次支付的时候都忘记录屏,这里用 Pushbullet 测试了两类文本的通知,效果如动图所示。

记账总是半途而废?用 Tasker + 钱迹实现自动记账

高级玩法

用通知触发记账其实非常直观,也很有效,但是有两个缺点:

  • 不少通知里面没有金额,甚至不产生通知(比如淘宝支付之后),那么方法就不起效果了
  • 钱迹提供的很多丰富的参数没有利用,比如备注,分类也需要自己选择

关于无通知触发的问题,可以使用 Log Entry 来解决。Log Entry 是去年末 Tasker 更新推出的被称为 Game Changer 的功能,即可以监听 Logcat 来实现触发。具体可见 官方示例 ,需要使用 ADB 或 Root 授权。

如果这些还不够花里胡哨怎么办?可以看看 @Fairyex 用 语音记账 的方法。通过语音输入转文字,然后对文字进行分隔和提取,就能不但自动记录金额,也可以记录备注、分类等信息。

关联阅读:

> 下载少数派客户端、关注少数派公众号,发现更多实用 Tasker 自动化玩法 :cat:‍


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JSP 应用开发详解(第二版)

JSP 应用开发详解(第二版)

飞思科技产品研发中心 / 电子工业出版社 / 2004-1-1 / 55.00

本书结合JSP和Servlet的最新规范,从基本的语法和规范入手,以经验为后盾,以实用为目标,以实例为导向,以实践为指导,深入浅出地讲解了JSP 开发中的种种问题。以精简的内容介绍了JSP的语法、Servlet技术、JDBC技术、标签库技术、表达式语言、Struts、JavaServer Face等技术;对于JSP开发中常遇到的典型的难点,专门设置了专题进行集中讨论。本书的最后一篇围绕一个电子商务......一起来看看 《JSP 应用开发详解(第二版)》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具