我已经应用了新的拨出广播接收器。它工作正常。
但我想知道应用程序用户拨打了哪个电话。
即。从默认拨号器或谷歌语音应用程序?
我怎么知道这个?
感谢。
答案 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)来读取最近的两个应用程序以提供更大的灵活性。
试一试,让我们知道它是否有效。