Android,检测哪个应用程序正在发送短信?

标签 android sms android-contentresolver

有没有办法检测发送截获短信的应用程序?

在我的代码中,我可以拦截传出和传入的短信、读取正文、电话号码等,但我不知道是否有办法检测发送短信的应用/程序包。我已经搜索过但没有运气。 提前致谢。 我正在使用以下库来拦截短信:

Sms Radar on GitHub

请注意,我不是在谈论作为默认消息传递应用程序的应用程序。有时,WhatsApp 等其他应用程序会发送短信来验证用户身份。这些类型的 SMS 在发件箱/已发送消息中是不可见的,尽管我可以在发送/接收时检测到它们。

所以我只想确切地知道哪个应用程序(程序包名称)正在发送短信。

最佳答案

据我所知,您无法检测到哪个应用正在发送短信。它只是没有保存在内容存储中。

但是,您可以使用一个容易出错的解决方法:
在发送 SMS 时列出当前运行的所有具有 SEND_SMS 权限(可能也具有互联网权限)的应用。

另一种(未经测试的)方法可能是使用 Thread.currentThread().getStackTrace() 读取 onSmsSent() 中的堆栈,方法是遍历返回的数组,直到到达可以发送的应用程序短信。但我猜这行不通,因为 Android 最有可能代理对内容存储所做的任何更改。

关于Android,检测哪个应用程序正在发送短信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45669846/

相关文章:

python - 如何向python脚本发送短信?

android - 如何在 "content://sms/draft"中插入草稿后更新短信线程

android - 如何使用 appCompat 22.1 及更高版本中的新 AlertDialog 并为其设置样式

android - 如何在不使用 nestedScrollView 的情况下在 webview 滚动时隐藏和显示 FAB

java - 如何在 jsmpp 中将消息分离到第三方 Binder

android - 只阅读特定的短信?

c# - 从内部存储中查找文档的文件路径

android - ContentResolver openInputStream() 在现有文件上抛出 FileNotFound

java - SingleView ImageLoader 显示 NullPointerException

android - “android:scrollbarSize”怎么设置?