CALL专注于HTC的感觉
我有一个活动通过intent-filter
和路由通过我的应用程序捕获ACTION_CALL
意图,这适用于Nexus one,Moto Blur和三星设备 。 但不是在HTC的意义上。 :(
Intent.ACTION_CALL_BUTTON
在HTC按钮被按下时被调用,但是当你没有收到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