【问题标题】:Intercepting the ACTION_CALL intent on HTC sense拦截 HTC 感知的 ACTION_CALL 意图
【发布时间】:2011-06-17 11:36:37
【问题描述】:

我有一个 Activity 可以通过 intent-filter 捕获 ACTION_CALL 意图并通过我的应用程序进行路由,该应用程序在 Nexus one、Moto Blur 和三星设备上运行良好。但不是关于 HTC 的感觉。 :(

按下 HTC sense 按钮时会调用Intent.ACTION_CALL_BUTTON,但当您拨打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 已经放置了自己的感应拨号器,并且它正在做一些有趣的事情(可能是意图过滤器优先级?)。

Updated1:尝试将优先级设置为最大 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 dialer的优先级最高,正在中止广播
  • 如果是这样,那么他们的手机应该没有通过 CTS。
  • 我想我至少应该让大家知道我已经花费了大量时间和精力来寻找这个查询的解决方案。原因是我不仅喜欢作为新人解决此类问题,而且奖励积分让我觉得我的工作受到了赞赏。众所周知,在这里解决问题并没有个人利益,所以至少我希望马特应该是专业的,并按照承诺奖励我积分。严格遵守职业礼仪,让我们在这个论坛上互相恭维。
  • 嗨,Neeraj,赏金是代表 Scott 发布的,他在本周末之前一直不在办公室。我对这个问题一无所知,因此无法判断提交的任何答案。如果斯科特接受了答案,我将奖励赏金。本着专业精神,请耐心等待。
  • 感谢您的沟通。但如前所述,我更渴望得到答复,无论我给出的解决方案是否解决了目的。奖励是我刚刚传达的次要问题。无论如何,谢谢。

标签: android intentfilter htcsense


【解决方案1】:

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

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

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

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

最后的结论是你不能处理 CALL 但只能在某些情况下处理 CALL_PRIVILEGED。 确保在您的 HTC 上使用 skype 应用程序并转到 People -> 查看联系人,然后按住 Call mobile/home 然后这也显示了选择调用处理程序的对话框。

【讨论】:

    【解决方案2】:

    它应该适合你

    <activity>
      <intent-filter>
        <action android:name="android.intent.action.CALL_PRIVILEGED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="vnd.android.cursor.item/phone" />
        <data android:mimeType="vnd.android.cursor.item/phone_v2" />
        <data android:mimeType="vnd.android.cursor.item/person" />
      </intent-filter>
    </activity>
    

    for mode detail read there

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题。 我不能用

      adb shell am start -a android.intent.action.CALL -d tel:12345

      在我的真实手机上。但它可以在仿真设备上运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-04
        相关资源
        最近更新 更多