Android,检测哪个应用正在发送短信?
有没有办法检测发送截获短信的应用程序 在我的代码中,我可以截获传出和传入的短信,读取正文、电话号码等,但我不知道是否有办法检测发送短信的应用程序/软件包。我找过了,但运气不好。 提前谢谢。 我正在使用以下库截取短消息: 请注意,我不是在说默认的消息传递应用程序。有时,像WhatsApp这样的其他应用程序会发送短信来验证用户身份。这些类型的短信在发件箱/已发送邮件中不可见,尽管我可以在发送/接收点检测到它们Android,检测哪个应用正在发送短信?,android,sms,android-contentresolver,Android,Sms,Android Contentresolver,有没有办法检测发送截获短信的应用程序 在我的代码中,我可以截获传出和传入的短信,读取正文、电话号码等,但我不知道是否有办法检测发送短信的应用程序/软件包。我找过了,但运气不好。 提前谢谢。 我正在使用以下库截取短消息: 请注意,我不是在说默认的消息传递应用程序。有时,像WhatsApp这样的其他应用程序会发送短信来验证用户身份。这些类型的短信在发件箱/已发送邮件中不可见,尽管我可以在发送/接收点检测到它们 因此,我只想知道哪个应用程序(软件包名称)正在发送短信。如果您无法检测到哪个应用程序正在
因此,我只想知道哪个应用程序(软件包名称)正在发送短信。如果您无法检测到哪个应用程序正在发送短信。它只是没有保存在内容存储中 但是,您可以使用一种容易出错的解决方法:
列出当前运行的所有在发送SMS时具有“发送”SMS权限(可能还具有internet权限)的应用程序
另一种(未测试)方法可能是使用
Thread.currentThread().getStackTrace()
读取onsmsent()中的堆栈,方法是迭代返回的数组,直到到达可以发送SMS的应用程序。但我想这不会起作用,因为Android最有可能代理对内容存储所做的任何更改。因此我找到了一个解决办法。在应用程序发送短消息的过程中,这是一个前台进程。因此,当我的onmssent()被调用时,我得到了前台进程的列表,并在列表的顶部找到了发送短信的应用程序
虽然这可能不是一个可靠的解决方案,但正如@Ch4t4r所说,似乎没有直接获得短信发送应用程序的解决方案,而且这个技巧听起来已经足够好了 请记住,在您访问前台应用程序之前,用户必须明确授予您使用数据的权限<代码>开始活动(新意图(设置、操作、使用、访问、设置))代码>这只需要在较新的Android版本上完成