V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tonni
V2EX  ›  Android

Tasker 不能捕捉到未接来电的状态和事件

  •  
  •   Tonni · 2017-07-14 22:20:09 +08:00 · 12071 次点击
    这是一个创建于 2681 天前的主题,其中的信息可能已经有所发展或是发生改变。

    遇到一个 Tasker 的问题,今天在同事的 Moto X 上尝试也遇到了同样的问题,如果有安装 Tasker 的手机的话帮我测试下,谢谢 ;-)

    环境

    手机:小米 2

    OS:MIUI 8.1 stable global

    Android 版本:5.0.2

    Tasker 版本:4.9u4 Google Play 版

    权限:已授予 Tasker 所有权限

    问题描述

    在 Tasker 里面设置了一个任务:当手机有未接来电时把未接来电的号码写入到一个文件中,手动执行写入文件的 task 可以正常写入,但是当电话打过来时写入文件的操作却不能被执行,开启 log 后显示有未接电话时根本没有执行任何操作。

    Profile:

    image

    Task:

    image

    第 1 条附言  ·  2017-07-15 08:12:18 +08:00

    Tasker Profile 和 Task,导入前在 SD 卡上新建一个叫 MissedCallsLog 的目录。

    <TaskerData sr="" dvi="1" tv="4.9u4m">
    	<Profile sr="prof22" ve="2">
    		<cdate>1499963747890</cdate>
    		<edate>1500077287871</edate>
    		<id>22</id>
    		<mid0>4</mid0>
    		<pri>50</pri>
    		<Event sr="con0" ve="2">
    			<code>2003</code>
    			<Str sr="arg0" ve="3">C:ANY</Str>
    		</Event>
    	</Profile>
    	<Project sr="proj0" ve="2">
    		<cdate>1480560162335</cdate>
    		<mdate>1500077301528</mdate>
    		<name>Base</name>
    		<pids>22</pids>
    		<tids>4</tids>
    		<Img sr="icon" ve="2">
    			<nme>hl_aaa_ext_home</nme>
    		</Img>
    	</Project>
    	<Task sr="task4">
    		<cdate>1500005533281</cdate>
    		<edate>1500077287871</edate>
    		<id>4</id>
    		<nme>WriteFile</nme>
    		<pri>100</pri>
    		<Action sr="act0" ve="7">
    			<code>410</code>
    			<Str sr="arg0" ve="3">MissedCallsLog/mc.txt</Str>
    			<Str sr="arg1" ve="3">haha</Str>
    			<Int sr="arg2" val="1"/>
    			<Int sr="arg3" val="1"/>
    		</Action>
    	</Task>
    </TaskerData>
    
    
    第 2 条附言  ·  2017-07-15 22:55:31 +08:00

    使用事件监听依然不可以捕捉到未接电话:

    <TaskerData sr="" dvi="1" tv="4.9u4m">
    	<Profile sr="prof2" ve="2">
    		<cdate>1500129018625</cdate>
    		<edate>1500129018625</edate>
    		<id>2</id>
    		<mid0>4</mid0>
    		<Event sr="con0" ve="2">
    			<code>2003</code>
    			<pri>0</pri>
    			<Str sr="arg0" ve="3">C:ANY</Str>
    		</Event>
    	</Profile>
    	<Project sr="proj0" ve="2">
    		<cdate>1480560162335</cdate>
    		<mdate>1500129018625</mdate>
    		<name>Base</name>
    		<pids>2</pids>
    		<tids>4</tids>
    		<Img sr="icon" ve="2">
    			<nme>hl_aaa_ext_home</nme>
    		</Img>
    	</Project>
    	<Task sr="task4">
    		<cdate>1500005533281</cdate>
    		<edate>1500129028716</edate>
    		<id>4</id>
    		<nme>WriteFile</nme>
    		<pri>100</pri>
    		<Action sr="act0" ve="7">
    			<code>410</code>
    			<Str sr="arg0" ve="3">MissedCallsLog/mc.txt</Str>
    			<Str sr="arg1" ve="3">haha</Str>
    			<Int sr="arg2" val="1"/>
    			<Int sr="arg3" val="1"/>
    		</Action>
    	</Task>
    </TaskerData>
    
    第 3 条附言  ·  2017-07-15 23:35:34 +08:00
    已经把问题发到官方 forum 里了: https://groups.google.com/forum/#!topic/tasker/2iWrLEFhl_o
    17 条回复    2017-12-20 15:04:14 +08:00
    hzcxdgioa
        1
    hzcxdgioa  
       2017-07-14 22:31:24 +08:00   ❤️ 1
    miui 就不要折腾了,他是深度定制系统,一些东西已经改变了,或者删掉了,tasker 是按照原生设计的,不遵照原生的系统,系统改得差不多,根本不可能完全相互兼容,劝你找个原生试试,如果原生没问题,还是放弃吧。
    abmin521
        2
    abmin521  
       2017-07-15 00:08:29 +08:00 via Android   ❤️ 1
    楼上加一 另外建议把 profile 导出发上来
    loveyu
        3
    loveyu  
       2017-07-15 06:18:57 +08:00 via Android   ❤️ 1
    我改用 automate 了
    greenskinmonster
        4
    greenskinmonster  
       2017-07-15 08:43:24 +08:00   ❤️ 1
    试试 5.0beta 版?
    http://tasker.dinglisch.net/beta.html

    有些触发条件貌似亮屏解锁情况是即时的,锁屏时则不一定
    woyaojizhu8
        5
    woyaojizhu8  
       2017-07-15 14:15:10 +08:00
    automate, 比 tasker 易用很多
    haozi1986
        6
    haozi1986  
       2017-07-15 22:00:35 +08:00 via Android   ❤️ 1
    楼主这个为何不工作,我的理解是这样的
    因为你的配置文件里,未接来电用的是一个状态,不是一个事件,所以当用它来触发一个任务的时候,有可能会因为 tasker 监控的原因漏掉,造成无法触发
    楼主可以试试事件 Events 里面的那个漏接来电

    这只是一个建议,因为我现在没有未接来电,不能帮你测试,很有可能我说的不准确
    haozi1986
        7
    haozi1986  
       2017-07-15 22:14:17 +08:00   ❤️ 1
    顺便补一句,据我的使用经验,即便在系统中给予了 takser 全部权限,包括一些特殊的比如在设备管理器中开启 tasker,也不能保证 tasker 能够随时响应,因为在现在的 android 系统中,即便是原生系统,互相制约的因素还是有点多,若要随时响应,唯一的方式大概是在 tasker 的系统设置中调整各种监控时长,但是这无疑会造成不必要的耗电,得不偿失。

    回到楼主的这个配置上面来,楼主的配置使用的是以未接来电的状态来触发事件,由于未接来电在没有取消的时候,它是一个持续性的状态,如果 tasker 在监控的过程中错过了某一个时间节点,那么这一状态就不会得到响应,甚至于 tasker 会误认为这个已经得到了响应所以选择了忽略,继而无法触发后续任务

    但是在 tasker 的事件 Events 中也有一个未接来电的触发选项,按照我的理解,这个的响应应该会更为及时,因为是即时触发的,不存在因为系统原因造成延时而错过。

    楼主可以试试我说的这个,用 Events 中的未接来电来触发

    我感觉这是可行的
    当然,如果有误导,也望理解
    Tonni
        8
    Tonni  
    OP
       2017-07-15 22:54:39 +08:00
    @haozi1986 非常感谢你的回复,我之前已经尝试使用 Event 的 Missed Call 来进行监听了,但是依然没有效果,我把我的 Event 配置 Appended 到帖子的下面了。实在不行借一台 Google Nexus 来在原生 Android 上试试。
    haozi1986
        9
    haozi1986  
       2017-07-16 10:27:40 +08:00   ❤️ 1
    @Tonni

    我刚刚测试了一下, 用 event 可以正常工作
    这样说来应该是你的手机系统与 tasker 之间不兼容造成的了

    手机:Nexus 6
    Android 版本:7.1.2 (六月安全补丁)
    Tasker 版本:5.0b5
    haozi1986
        10
    haozi1986  
       2017-07-16 10:33:21 +08:00   ❤️ 1
    <TaskerData sr="" dvi="1" tv="5.0b5m">
    <Profile sr="prof21" ve="2">
    <cdate>1500171617609</cdate>
    <edate>1500172132127</edate>
    <id>21</id>
    <limit>true</limit>
    <mid0>9</mid0>
    <nme>Test</nme>
    <Event sr="con0" ve="2">
    <code>2003</code>
    <pri>0</pri>
    <Str sr="arg0" ve="3">C:ANY</Str>
    </Event>
    </Profile>
    <Task sr="task9">
    <cdate>1500005533281</cdate>
    <edate>1500171725922</edate>
    <id>9</id>
    <nme>WriteFile</nme>
    <pri>100</pri>
    <Action sr="act0" ve="7">
    <code>410</code>
    <Str sr="arg0" ve="3">temp/mc.txt</Str>
    <Str sr="arg1" ve="3">%CDATE - %CNUM</Str>
    <Int sr="arg2" val="1"/>
    <Int sr="arg3" val="1"/>
    </Action>
    </Task>
    </TaskerData>
    flynaj
        11
    flynaj  
       2017-07-16 15:03:02 +08:00 via Android   ❤️ 1
    你确定给个所有权限
    Tonni
        12
    Tonni  
    OP
       2017-07-16 16:09:45 +08:00
    @haozi1986 @flynaj

    感谢回复,早上重新把手机数据全部清除恢复出厂设置后重新安装 Tasker 并给予所有权限也是不能捕捉到状态/事件,我刚才下载了 Automate,配置了自动回复短信至未接电话的脚本也是不能正常执行,log 里面没有任何动态,感觉就是这类自动化工具对于魔改的 MIUI 束手无策。
    Tonni
        13
    Tonni  
    OP
       2017-07-19 00:54:42 +08:00
    @flynaj @haozi1986 我昨天拿了一台红米 Note 3 全网通版,刷了最新的 Lineage 14.1,Android 7.1.2 的版本,折腾了老半天结果还是不行,权限都给了,我实在是想不明白为什么了。
    haozi1986
        14
    haozi1986  
       2017-07-19 07:12:25 +08:00   ❤️ 1
    除了应用权限全给以外,你再确认一下这些设置:

    无障碍
    设备管理器
    可出现在其他应用上的应用
    通知使用权
    电源优化模式
    可修改系统设置

    看看这些设置是否全部为 Tasker 开启(你的这个需求不一定需要开启全部,但是为以防万一,建议全部开启)
    如果有些设置找不到在哪里,你可以试试 5.0beta 版,里面有这些设置选项的跳转菜单,在 more > android setting 里面

    另外,看看你的 takser 设置的 Monitor 里面,Run In Foreground 是否开启,同页面下面的各个选项你也可以多看看

    如果全部都正常,那没道理不工作的
    Tonni
        15
    Tonni  
    OP
       2017-07-19 09:42:27 +08:00
    @haozi1986 已确认,这些权限/设置都一一开启了,我也按照官方的说明: http://tasker.dinglisch.net/userguide/en/androidpowermanagement.html 设置了。

    但是还是不行,捕捉不到任何通话相关的事件/状态,这...
    Tonni
        16
    Tonni  
    OP
       2017-07-24 10:29:59 +08:00
    @haozi1986
    @flynaj
    @greenskinmonster
    @abmin521
    @hzcxdgioa

    感谢之前的关注,Google Group 里面有人指出了问题的原因: https://groups.google.com/d/msg/tasker/2iWrLEFhl_o/XmtvYF7IAwAJ
    cui0wei0
        17
    cui0wei0  
       2017-12-20 15:04:14 +08:00 via iPhone
    @Tonni 我把勿扰模式打开就可监听了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2598 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 04:55 · PVG 12:55 · LAX 20:55 · JFK 23:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.