Android新的拨出电话

时间:2012-07-26 08:24:38

标签: android

  

可能重复:
  How to determine the sender of Broadcast Intent

我已经应用了新的拨出广播接收器。它工作正常。

但我想知道应用程序用户拨打了哪个电话。

即。从默认拨号器或谷歌语音应用程序?

我怎么知道这个?

感谢。

1 个答案:

答案 0 :(得分:0)

我的第一次尝试是获得广播或意图发送广播的来源。然而,Android并没有提供一种知道这一点的方法,他们甚至没有强调这一点,因为它通常是对用户有意义的广播内容。

如果是您自己的发送广播的应用程序,那么迈克尔建议会很容易。你会添加一个额外的,表明你的广播源到接收器。但是,您可以从OUTGOING_CALL意图获得的唯一额外信息是拨打电话的号码。

然而,我有一个解决方案,不能保证工作,纯粹是理论上的。你在这里自担风险。

我们的想法是检查您的接收器中最近使用的应用程序,并假设该呼叫是通过Google Voice完成的,如果它是最近使用过的应用程序之一。这是因为我们希望用户在拨打电话后立即在Google语音上处于活动状态,并且您的接收器会截获该消息。

所以在你的接收器中,你可以这样做:

ActivityManager m = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
RecentTaskInfo task = m.getRecentTasks(3,0).get(0);
String nameofrecentlyusedapp = task.ComponentName.toString();

检查最近使用的应用程序,甚至使用get(1)和get(2)来读取最近的两个应用程序以提供更大的灵活性。

试一试,让我们知道它是否有效。