gpt4 book ai didi

android - 拦截 HTC sense 上的 ACTION_CALL Intent

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:41 24 4
gpt4 key购买 nike

我有一个 Activity 可以通过 intent-filter 捕捉 ACTION_CALL Intent ,并通过我的应用进行路由,这在 Nexus one、Moto Blur 和三星设备上运行良好 。但不是 HTC sense。 :(

Intent.ACTION_CALL_BUTTON 在按下 HTC sense 按钮时调用,但是当您调用 ACTION_CALL 时未收到日志输出显示android.intent.action.CALL 被发送。

06-17 12:22:45.173: INFO/ActivityManager(83): Starting activity: Intent {
act=android.intent.action.CALL dat=tel:00390642200001 flg=0x10000000
cmp=com.android.phone/.InCallScreen (has extras) }

我猜这是因为 HTC 已经安装了自己的 sense 拨号器并且它在做一些有趣的事情(也许有 intent 过滤器优先级?)。

更新 1:尝试将优先级设置为最大 int 值,没有变化。

<intent-filter android:priority="2147483647">
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

最佳答案

您可能会感到惊讶,但您是对的。我在 HTC Desire 上做了很多关于这个主题的实验,我发现 HTC 在包管理器中做了一些更改或添加了一些包装器,所以每当我们添加具有操作 CALL 的 Activity 时,它就不会添加 ACTION CALL。他们这样做只是为了 CALL 操作,而不是为了 DIAL。为了找出这一点,我做了一些实验:

1. 创建了一个使用 ACTION DIAL 注册的应用程序。因此,每当调用 __ACTION_DIAL__ Intent Activity 时,HTC 都会显示两个选项,一个是自己拨号,另一个是我的 Activity 。另一种测试拨号的方法是转到 HTC 手机中的通话记录并选择任何电话号码或联系人,然后选择**在调用前编辑号码**。这也将显示两个选项以选择一个。

2. 由于他们以编程方式禁用调用功能,所有其他调用方式都是通过与 HTC 的 UI 交互来完成的。因此,我找到了另一种以编程方式调用的方法,即在我的 list 文件中使用 。但是这一次由于他们的改变,我无法直接处理 Call 操作,但另一种处理 CALL 的方法是当 android 查找 ACTION_CALL_PRIVILEGED 时。幸运的是我发现了。只需转到 人员 -> 查看联系人。然后它显示调用选项。在 HTC Desire 中有 Call mobile。所以按住那个选项。

Bamm.. 这次 HTC 显示了选择一个选项来调用的选项。一个是它自己的,另一个当然是我自己的。

最后的结论是,您只能在某些情况下处理 CALL 但 CALL_PRIVILEGED。要确保在您的 HTC 上使用 skype 应用程序并转到People -> View Contact 然后按住 Call mobile/home 然后这还会显示用于选择 Call 处理程序的对话框。

关于android - 拦截 HTC sense 上的 ACTION_CALL Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6385164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com