CALL专注于HTC的感觉

我有一个活动通过intent-filter和路由通过我的应用程序捕获ACTION_CALL意图,这适用于Nexus one,Moto Blur和三星设备 。 但不是在HTC的意义上。 :(

Intent.ACTION_CALL_BUTTONHTC按钮被按下时被调用,但是当你没有收到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) }

我猜这是因为宏达电已经把自己的感应拨号器,并做了一些有趣的事情(也许意图过滤优先?)。

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>

你可能会感到惊讶,但你是对的。 我已经在HTC Desire上对这个主题进行了很多实验,并且我发现HTC在Package Manager中做了一些改变,或者在Package Manager中添加了一些包装,所以无论何时添加具有动作CALL的活动,都不会添加ACTION CALL。 他们只为CALL操作而不是DIAL操作。 为了找出这个我做了一些实验:

1.创建一个注册了ACTION DIAL的应用程序。 因此,无论何时打电话给__ ACTION_DIAL__ intent活动,HTC都会显示两个选项,一个用于拨号,另一个用于我的活动。 另一种测试拨号的方法是转到HTC手机中的通话记录,然后选择任何电话号码或联系人,然后在拨打**之前选择**编辑号码。 这也将显示两个选项来选择一个。

2.由于它们以编程方式禁用CALL功能,所有其他调用方式都是通过与HTC的UI进行交互完成的。 所以我找到了另一种通过编程方式调用的方法,那就是在我的清单文件中使用<action android:name =“android.intent.action.CALL_PRIVILEGED”/>。 但是这次再次由于他们的改变,我无法直接处理调用动作,但处理CALL的另一种方式是当android查找ACTION_CALL_PRIVILEGED时。 幸运的是,我发现。 只需前往人员 - >查看联系人。 然后它显示选择呼叫。 在HTC Desire中有呼叫移动。 所以请按住该选项。

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

最后的结论是,你不能处理CALL,但在某些情况下只能使用CALL_PRIVILEGED。 要确保在HTC上使用Skype应用程序并转到人员 - >查看联系人,然后按住呼叫移动/家庭,然后这也显示对话框以选择呼叫的处理程序。


它应该适合你

<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>

在那里阅读模式细节

链接地址: http://www.djcxy.com/p/53111.html

上一篇: CALL intent on HTC sense

下一篇: Merge two XML files recursively