sco*_*yab 7 android intentfilter htcsense
我有一个活动来通过我的应用程序捕获ACTION_CALL意图intent-filter和路由,这在Nexus one,Moto Blur和Samsung设备上运行良好.但不是HTC意义上的.:(
将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) }
Run Code Online (Sandbox Code Playgroud)
我猜这是因为HTC已经把他们自己的感觉拨号器和它做了一些有趣的事情(可能有意图过滤器优先级?).
Updated1:尝试将优先级设置为max 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>
Run Code Online (Sandbox Code Playgroud)
你可能会感到惊讶,但你是对的。我在 HTC Desire 上对此主题做了很多实验,我发现 HTC 在程序包管理器中做了一些更改,或者添加了一些包装器,因此每当我们添加具有操作 CALL 的活动时,它就不会添加 ACTION CALL。他们这样做只是为了 CALL 操作,而不是为了 DIAL。为了找出这一点,我做了一些实验:
1. 创建一个注册到 ACTION DIAL 的应用程序。因此,每当调用 __ACTION_DIAL__ 意图活动时,HTC 都会显示两个选项,一个用于“拨号”自己的活动,另一个是“我的活动”。测试 Dial 的另一种方法是转到 HTC 手机中的通话记录,然后选择任何电话号码或联系人,然后选择 **拨打前编辑号码**。这还将显示两个选项以供选择。
2. 由于他们通过编程方式禁用了 CALL 功能,因此所有其他呼叫方式都是通过与 HTC UI 交互来完成的。所以我找到了另一种以编程方式调用的方法,那就是在我的清单文件中使用<action android:name="android.intent.action.CALL_PRIVILEGED" /> 。但这一次,由于他们的更改,我无法直接处理 Call 操作,但处理 CALL 的另一种方法是当 android 查找ACTION_CALL_PRIVILEGED时。幸运的是我发现了这一点。只需转到“人员” -> “查看联系人”即可。然后它显示呼叫选项。HTC Desire 中有Call mobile功能。因此,按住该选项。Bamm.. 这次 HTC 显示了选择一个选项进行通话的选项。一个是它自己的,另一个当然是我自己的。
最后的结论是,您只能在某些情况下处理 CALL,但只能处理 CALL_PRIVILEGED。要确保在 HTC 上使用Skype应用程序并转至人员->查看联系人,然后按住呼叫手机/家庭,此时还会显示用于选择呼叫处理程序的对话框。
| 归档时间: |
|
| 查看次数: |
3064 次 |
| 最近记录: |