可能重复:
如何确定广播意图的发送者
我已经应用了新的拨出电话广播接收器。它工作正常。
但我想知道从哪个应用程序用户拨打了电话。
即来自默认拨号器或谷歌语音应用程序?
我怎么知道这个?
谢谢。
我的第一次尝试是获取广播源或发送广播的意图。然而,Android 没有提供一种方法来了解这一点,他们甚至没有强调这一点,因为通常广播的内容对用户来说是有意义的。
如果是您自己的应用程序发送广播,那么正如迈克尔建议的那样,这将非常容易。您将添加一个额外的内容,将您的广播源指示给接收器。但是,您可以从 OUTGOING_CALL 意图中获得的唯一额外信息是呼叫的号码。
不过,我有一个解决方案,但不能保证有效,而且纯粹是理论上的。您在这里需要自担风险。
这个想法是检查您的接收器中最近使用的应用程序,并假设呼叫是通过 Google Voice 完成的,如果它是最近使用的应用程序之一。这是因为我们希望用户在拨打电话并且您的接收者截获该电话后立即在 Google Voice 上处于活动状态。
所以在你的接收器中,你可以这样做:
ActivityManager m = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
RecentTaskInfo task = m.getRecentTasks(3,0).get(0);
String nameofrecentlyusedapp = task.ComponentName.toString();
检查最近使用的应用程序,甚至使用 get(1) 和 get(2) 读取两个最近的应用程序以提供更大的灵活性。
试一试,让我们知道它是否有效。