内容简介:Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。文章代表作者个人观点,少数派仅对标题和排版略作修改。继上次
Matrix 精选
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
继上次 通过 Tasker 和通知实现机器人 之后,决定利用 Tasker 做一些更有效率的事情、解决实际使用手机中的一些痛点。
思来想去,我有一个经常重复的操作是每次支付完都会使用钱迹进行记账,具体步骤无非是「回到桌面 > 打开钱迹/钱迹微件 > 输入金额 > 选择分类 > 记账完成」。
可是我观察到几乎每次支付之后,支付宝或其他 App 都会生成一个支付成功或者订单生成的通知。那么利用这个通知事件, 自动打开 钱迹或者其他记账应用来记账是一个很直接和容易实现的想法。另外钱迹刚好实现了 Deeplink(深度链接)的接口 1 2 ,能够比较方便地进行自动化记账的操作。
这里把通知分为两类,其中类似支付宝比较良心地在通知文本里面提供了金额,这样我们就可以把通过正则匹配出来,直接通过钱迹的接口,一般来说只需要选择分类再点击就可以记账了;如果没有提供金额的,那么就直接打开记账页面进行手动记账。
另外本文不会像上次一样需要较多的插件和第三方应用来实现效果。
通知触发 Intent
首先我们从简单的开始,我们希望某个通知产生的时候,能够自动打开钱迹「记账」页面,从而减少打开某个应用内界面的操作。这里一是 通知事件 作为触发,二是 发送 Intent 来打开指定页面的操作。
复习通知事件
如果之前接触过 Tasker 并且阅读了上一篇利用通知自动回复微信的文章,应该对 Tasker 的通知事件比较熟悉了。这里我们稍微复习一下通知事件在 Tasker 里的事件参数(Event Context)。
%evtprm1 %evtprm2 %evtprm3
当然在第一个例子里面不需要这么复杂,Tasker 自带的通知事件可以针对应用和标题进行过滤,这里已经足够我们使用了。
比如这里我们完整匹配了来自饿了么的标题为「您的订单已接单」的通知。关于 Tasker 的模式匹配,可以参考官方文档 3 。可以简单提一下如果没有特殊符号表示完全匹配, *text*
会匹配任意带 text
的文本, /
表示或,应该能满足大部分的简单的使用场景了。
发送 Intent
设置好触发条件之后,那么就可以执行打开页面的操作。这里使用「发送意图」的动作。
com.mutangtech.qianji com.mutangtech.qianji.bill.add.AddBillActivity
这里有聪明的小伙伴就会想知道这两个东西怎么得到的。包名比较好找,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,正如前面所述一样发送意图。
效果展示
因为每次支付的时候都忘记录屏,这里用 Pushbullet 测试了两类文本的通知,效果如动图所示。
高级玩法
用通知触发记账其实非常直观,也很有效,但是有两个缺点:
- 不少通知里面没有金额,甚至不产生通知(比如淘宝支付之后),那么方法就不起效果了
- 钱迹提供的很多丰富的参数没有利用,比如备注,分类也需要自己选择
关于无通知触发的问题,可以使用 Log Entry 来解决。Log Entry 是去年末 Tasker 更新推出的被称为 Game Changer 的功能,即可以监听 Logcat 来实现触发。具体可见 官方示例 ,需要使用 ADB 或 Root 授权。
如果这些还不够花里胡哨怎么办?可以看看 @Fairyex 用 语音记账 的方法。通过语音输入转文字,然后对文字进行分隔和提取,就能不但自动记录金额,也可以记录备注、分类等信息。
关联阅读:
> 下载少数派客户端、关注少数派公众号,发现更多实用 Tasker 自动化玩法 :cat:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Beancount复式记账(一)
- GnuCash 3.0 发布,开源记账工具
- 分享个最近做的记账小程序
- GnuCash 2.6.18 发布,开源记账工具
- 然之协同 5.1.stable 发布,完善记账功能,修复Bug
- php如何实现session,自己实现session,laravel如何实现session
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JSP 应用开发详解(第二版)
飞思科技产品研发中心 / 电子工业出版社 / 2004-1-1 / 55.00
本书结合JSP和Servlet的最新规范,从基本的语法和规范入手,以经验为后盾,以实用为目标,以实例为导向,以实践为指导,深入浅出地讲解了JSP 开发中的种种问题。以精简的内容介绍了JSP的语法、Servlet技术、JDBC技术、标签库技术、表达式语言、Struts、JavaServer Face等技术;对于JSP开发中常遇到的典型的难点,专门设置了专题进行集中讨论。本书的最后一篇围绕一个电子商务......一起来看看 《JSP 应用开发详解(第二版)》 这本书的介绍吧!