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

Android, Detect which app is sending SMS?

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

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

Sms Radar on GitHub

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

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

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

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

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

所以我找到了解决方法。应用发送短信时,属于前台进程。所以当我的 onSMSSent() 被调用并在列表顶部找到正在发送 SMS 的应用程序时,我刚刚获得了前台进程列表。

虽然这可能不是一个可靠的解决方案,但正如@Ch4t4r 所说,似乎没有解决方案可以直接获取短信发送应用程序并且技巧听起来不错。