紧随上一篇,说一下创建ip拨号器过程中出现的一些问题。
1)在一開始监听外拨电话的时候会报这样一个警告:
Permission Denial: receiving Intent { act=android.intent.action.NEW_OUTGOING_CALL flg=0x10000010 (has extras) } to com.heng.ipdail/.OutCall requires android.permission.PROCESS_OUTGOING_CALLS due to sender com.android.phone (uid 1001)
从大概意思上能够看出,要想实现监听功能我们须要一个监听外拨电话的权限。找到清单文件,增加下面权限:android.permission.PROCESS_OUTGOING_CALLS。再载入一下就没问题了。
2)不显示LogCat。这个问题是昨晚刚发现的。要查看日志发现窗体没了,于是找了下资料,在一片博客里找到了答案,流程是这种: Preferences->Android->LogCat 然后设置成VERBOSE,上图一张:
3)模拟器没有拨号功能。
这个比較郁闷,找了非常久都没找到。最后在短信里发现了拨号功能,但仅仅能拨打已存在的电话,可能是我的软件有问题。还望大神指点一二。
4)模拟器桥接断开。这个应该属于系统问题,我之前建了两个模拟器。这几天主要用的5554,但昨晚载入程序时总是挂到5556上,试了好几次都不行,然后问了下组长。说须要重新启动adb,先进入ddms(在windows中能找到。前边也说过这个),找到Threads,直接上图吧:
5)最后补充一下上一篇提到的监听类(OutCall)。它继承了BroadcastReceiver,实现了接收事件的功能,作为四大组件之中的一个。我们须要在清单文件里对其进行配置:
<!-- 定义了一个广播接受者 ,它关心的事件为“新的外拨电话”--> <receiver android:name=".OutCall"> <intent-filter > <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> </intent-filter> </receiver>
这个定义是在application节点下的,首先指定名称(".OutCall),‘.‘代表当前包名;<intent-filter >为相应的意图过滤器,它通过指定action来设置当前监听器所关心的广播事件。我们用的是NEW_OUTGOING_CALL,当然还能够设置其它的关心事件,在本例中仅仅须要关心外拨电话就OK了。