1. 程式人生 > >Android從無知到有知——NO.6

Android從無知到有知——NO.6

con sender 斷開 popu com 系統 hone pre 博客

緊隨上一篇,說一下創建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了。


Android從無知到有知——NO.6