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

Android 如何拦截及处理垃圾短信?

  •  
  •   Lax02s · 2023-09-13 08:17:55 +08:00 · 10077 次点击
    这是一个创建于 471 天前的主题,其中的信息可能已经有所发展或是发生改变。
    类原生系统。

    如果要结合 Tasker 写一个 Android 12 、13 系统垃圾短信拦截工具:

    1 、结合 Tasker 用 JavaScript 代码实现;
    2 、Android 系统提供了垃圾短信处理的接口吗?
    识别如“退订”、“红包”等关键词后,将短信移到垃圾箱。

    “将短信移到垃圾箱”功能需要用到哪些 Android 系统接口?
    20 条回复    2023-09-22 13:58:36 +08:00
    TenProX
        1
    TenProX  
       2023-09-13 08:25:51 +08:00 via iPhone
    原生系统好像有自带的拦截功能哇。信息设置里面可以调。
    airbotgo
        2
    airbotgo  
       2023-09-13 08:39:39 +08:00
    @TenProX 自带的跟“没有”没什么区别。不提供关键词设置和拦截,垃圾短信畅行无阻。
    TenProX
        3
    TenProX  
       2023-09-13 08:40:52 +08:00 via iPhone
    无视就好了。即使你用了短信拦截,它还是一样会出现在你的收件箱。只不过是分组了而已。
    cxtrinityy
        4
    cxtrinityy  
       2023-09-13 09:24:19 +08:00 via Android
    原生垃圾拦截也没有那么好用,虽然没看 API ,不过我估计也就是在短信数据库设了个标识,系统本身应该没有 API ,需要短信应用自己处理,甚至可能全都是短信应用这边处理的
    我觉得体验最好的可能是 hook 吧,以前用 xposed 的时候研究过一阵子
    nekoyaki
        6
    nekoyaki  
       2023-09-13 10:09:19 +08:00
    我之前也找了好多方案或者 APP ,基本都不太行,各自有各自的问题。主要的障碍是安卓的新版本,只有默认短信 APP 才能写短信库。其他的 APP 即使能读取,也没有办法写入。以前可以装一些 xposed 插件实现外挂短信拦截,现在也懒得搞了。
    现在用“短信精灵”当默认短信 APP ,界面相对比较干净,可以设置一大堆关键词,被屏蔽的短信会进入单独的一个归档而不会直接消失,万一有什么误杀也有机会看到。可以按需设置提醒或者不提醒,我现在姑且就这么用着了。
    zictos
        7
    zictos  
       2023-09-13 10:18:11 +08:00
    直接操作 mmssms.db 短信数据库文件,sqlite 数据库。

    tasker 好像没找到可以删除短信的功能,chatgpt 提供的删除短信的命令是(没测试过):
    adb shell content delete --uri content://sms --where "_id=短信的 ID"
    不过自己直接操作数据库其实也挺方便的。你可以将垃圾短信都写入到一个文件中,然后删除它。
    ShadowPower
        8
    ShadowPower  
       2023-09-13 10:19:26 +08:00
    很久以前( Android 4.x 时代)的安卓可以允许第三方 APP 直接读写短信,那时候有一些第三方短信拦截工具。
    如今的 Android 只允许短信 APP 读写短信了(这方面比 iOS 还要封闭),但默认短信 APP 可以更换。
    所以只有使用第三方短信 APP 才可能拦截短信……因此,你可以自己写一个自带拦截功能的短信 APP 。

    或者用 xposed 来 hook 系统的短信 APP 。
    mscsky
        9
    mscsky  
       2023-09-13 10:44:10 +08:00
    用 QKSMS 就好了,不要造轮子了
    holy834
        10
    holy834  
       2023-09-13 13:44:52 +08:00
    miui 有关键词黑白名单的
    noahhhh
        11
    noahhhh  
       2023-09-13 13:55:28 +08:00 via Android
    1.买个通知滤盒
    2.装国内短信移植版,Android 应该是靠默认短信 app 处理垃圾短信的
    SenLief
        12
    SenLief  
       2023-09-13 16:07:23 +08:00 via iPhone
    我是直接用通知滤盒一类的工具,让它已读不提醒。
    guanzhangzhang
        13
    guanzhangzhang  
       2023-09-13 17:45:53 +08:00
    👀
    关键字黑名单:
    退订
    凭此短信
    填写问卷
    回 T 取关
    返现红包
    点击提现
    福利待领取
    转发无效
    白名单关键字:
    余额为
    lisxour
        14
    lisxour  
       2023-09-13 18:04:11 +08:00
    @airbotgo 这应该看系统吧,关键字拦截好多都有啊
    Yzh361
        15
    Yzh361  
       2023-09-13 19:14:02 +08:00 via Android
    NekoSMS
    正则表达式 匹配内容关键字、或者发送者
    realpg
        16
    realpg  
       2023-09-13 19:42:06 +08:00
    用 ADUI 无此烦恼 甚至不用配置
    zachary99
        17
    zachary99  
       2023-09-13 19:45:29 +08:00 via Android
    国内 UI 的拦截已经够用了,已标记的都过滤,自定义一些关键字拦截,我现在根本看不到广告短信
    luzonglinnnn
        18
    luzonglinnnn  
       2023-09-14 09:33:20 +08:00
    通知滤盒
    chinni
        19
    chinni  
       2023-09-14 19:02:37 +08:00 via Android
    已经无所谓了…没怎么看过短信了…验证码要发前打开等着看下就结束了…其他批量全部删除就行了
    bush911
        20
    bush911  
       2023-09-22 13:58:36 +08:00
    @zictos 我在用这个 tasker 任务删除短信,供参考:

    <TaskerData sr="" dvi="1" tv="6.1.32">
    <Task sr="task113">
    <cdate>1594959102332</cdate>
    <edate>1695362269091</edate>
    <id>113</id>
    <nme>SMS Delete</nme>
    <pri>100</pri>
    <Action sr="act0" ve="7">
    <code>547</code>
    <Str sr="arg0" ve="3">%sms</Str>
    <Str sr="arg1" ve="3">%SMSRF</Str>
    <Int sr="arg2" val="0"/>
    <Int sr="arg3" val="0"/>
    <Int sr="arg4" val="0"/>
    <Int sr="arg5" val="3"/>
    <Int sr="arg6" val="0"/>
    </Action>
    <Action sr="act1" ve="7">
    <code>667</code>
    <label>gets ID of latest sms received.</label>
    <Int sr="arg0" val="2"/>
    <Str sr="arg1" ve="3">content://sms</Str>
    <Int sr="arg10" val="1"/>
    <Str sr="arg2" ve="3"/>
    <Str sr="arg3" ve="3">_id</Str>
    <Str sr="arg4" ve="3">address = ?</Str>
    <Str sr="arg5" ve="3">%sms</Str>
    <Str sr="arg6" ve="3">date DESC limit 1</Str>
    <Str sr="arg7" ve="3"/>
    <Str sr="arg8" ve="3">%sms_id</Str>
    <Int sr="arg9" val="0"/>
    </Action>
    <Action sr="act2" ve="7">
    <code>137</code>
    <label>stop if get ID failed.</label>
    <Int sr="arg0" val="0"/>
    <Str sr="arg1" ve="3"/>
    <ConditionList sr="if">
    <Condition sr="c0" ve="3">
    <lhs>%sms_id1</lhs>
    <op>13</op>
    <rhs>0</rhs>
    </Condition>
    </ConditionList>
    </Action>
    <Action sr="act3" ve="7">
    <code>664</code>
    <label>I assume this action take the SMS ID from URI and parse it for use in the future?</label>
    <Str sr="arg0" ve="3">uri</Str>
    <Str sr="arg1" ve="3">Uri</Str>
    <Str sr="arg2" ve="3">parse
    {Uri} (String)</Str>
    <Str sr="arg3" ve="3">content://sms/%sms_id1</Str>
    <Str sr="arg4" ve="3"/>
    <Str sr="arg5" ve="3"/>
    <Str sr="arg6" ve="3"/>
    <Str sr="arg7" ve="3"/>
    <Str sr="arg8" ve="3"/>
    <Str sr="arg9" ve="3"/>
    </Action>
    <Action sr="act4" ve="7">
    <code>664</code>
    <label>I think this action gets the content from the parsed URI?</label>
    <Str sr="arg0" ve="3">cr</Str>
    <Str sr="arg1" ve="3">CONTEXT</Str>
    <Str sr="arg2" ve="3">getContentResolver
    {ContentResolver} ()</Str>
    <Str sr="arg3" ve="3"/>
    <Str sr="arg4" ve="3"/>
    <Str sr="arg5" ve="3"/>
    <Str sr="arg6" ve="3"/>
    <Str sr="arg7" ve="3"/>
    <Str sr="arg8" ve="3"/>
    <Str sr="arg9" ve="3"/>
    </Action>
    <Action sr="act5" ve="7">
    <code>664</code>
    <label>And this action is most likely the action that delete the SMS in the parsed URI.</label>
    <Str sr="arg0" ve="3"/>
    <Str sr="arg1" ve="3">cr</Str>
    <Str sr="arg2" ve="3">delete
    {int} (Uri, String, String[])</Str>
    <Str sr="arg3" ve="3">uri</Str>
    <Str sr="arg4" ve="3"/>
    <Str sr="arg5" ve="3"/>
    <Str sr="arg6" ve="3"/>
    <Str sr="arg7" ve="3"/>
    <Str sr="arg8" ve="3"/>
    <Str sr="arg9" ve="3"/>
    </Action>
    </Task>
    </TaskerData>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:43 · PVG 21:43 · LAX 05:43 · JFK 08:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.