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

239 天前
 Lax02s
类原生系统。

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

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

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

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

或者用 xposed 来 hook 系统的短信 APP 。
mscsky
239 天前
用 QKSMS 就好了,不要造轮子了
holy834
239 天前
miui 有关键词黑白名单的
noahhhh
239 天前
1.买个通知滤盒
2.装国内短信移植版,Android 应该是靠默认短信 app 处理垃圾短信的
SenLief
239 天前
我是直接用通知滤盒一类的工具,让它已读不提醒。
guanzhangzhang
239 天前
👀
关键字黑名单:
退订
凭此短信
填写问卷
回 T 取关
返现红包
点击提现
福利待领取
转发无效
白名单关键字:
余额为
lisxour
239 天前
@airbotgo 这应该看系统吧,关键字拦截好多都有啊
Yzh361
239 天前
NekoSMS
正则表达式 匹配内容关键字、或者发送者
realpg
239 天前
用 ADUI 无此烦恼 甚至不用配置
zachary99
239 天前
国内 UI 的拦截已经够用了,已标记的都过滤,自定义一些关键字拦截,我现在根本看不到广告短信
luzonglinnnn
238 天前
通知滤盒
chinni
238 天前
已经无所谓了…没怎么看过短信了…验证码要发前打开等着看下就结束了…其他批量全部删除就行了
bush911
230 天前
@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>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/973199

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX