Android从无知到有知——NO.6

            紧随上一篇,说一下创建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了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。