Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android,检测哪个应用正在发送短信?_Android_Sms_Android Contentresolver - Fatal编程技术网

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

Android,检测哪个应用正在发送短信?,android,sms,android-contentresolver,Android,Sms,Android Contentresolver,有没有办法检测发送截获短信的应用程序 在我的代码中,我可以截获传出和传入的短信,读取正文、电话号码等,但我不知道是否有办法检测发送短信的应用程序/软件包。我找过了,但运气不好。 提前谢谢。 我正在使用以下库截取短消息: 请注意,我不是在说默认的消息传递应用程序。有时,像WhatsApp这样的其他应用程序会发送短信来验证用户身份。这些类型的短信在发件箱/已发送邮件中不可见,尽管我可以在发送/接收点检测到它们 因此,我只想知道哪个应用程序(软件包名称)正在发送短信。如果您无法检测到哪个应用程序正在

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

在我的代码中,我可以截获传出和传入的短信,读取正文、电话号码等,但我不知道是否有办法检测发送短信的应用程序/软件包。我找过了,但运气不好。 提前谢谢。 我正在使用以下库截取短消息:

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


因此,我只想知道哪个应用程序(软件包名称)正在发送短信。

如果您无法检测到哪个应用程序正在发送短信。它只是没有保存在内容存储中

但是,您可以使用一种容易出错的解决方法:
列出当前运行的所有在发送SMS时具有“发送”SMS权限(可能还具有internet权限)的应用程序


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

因此我找到了一个解决办法。在应用程序发送短消息的过程中,这是一个前台进程。因此,当我的onmssent()被调用时,我得到了前台进程的列表,并在列表的顶部找到了发送短信的应用程序


虽然这可能不是一个可靠的解决方案,但正如@Ch4t4r所说,似乎没有直接获得短信发送应用程序的解决方案,而且这个技巧听起来已经足够好了

请记住,在您访问前台应用程序之前,用户必须明确授予您使用数据的权限<代码>开始活动(新意图(设置、操作、使用、访问、设置))这只需要在较新的Android版本上完成