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了。
Android從無知到有知——NO.6