在測試應用程式的時候發現,在android2.3上執行沒有問題的程式在android4.0版本上卻有問題. 想來肯定是版本相容性問題.
比如,在android2.3上廣播接受者的使用非常簡單,不論是採用在manifest.xml中註冊還是在服務中註冊.都只需要在intentfilter上註冊相應的action即可.
然而在3.0之後,就必須要在manifest.xml的use-permission中註冊相應的許可權才行.
這就是癥結所在. 以在服務中監聽電話撥打和來電為例進行說明!
工具/原料
eclipse
android4.0
步驟1: 註冊來去電監聽器
定義來電監聽器
定義去電監聽器
註冊監聽器
到此: 在服務中註冊來去電監聽器已經完成,但是在啟動服務後,這兩個監聽器根本沒有執行! 除錯也不會報錯!
步驟2:解決辦法是在manifest中新增許可權
新增:監控電話狀態的許可權和監控外撥電話的許可權
驗證測試:
總結: 有時候因為版本問題,會出一些莫名其妙的問題. 總的來講版本越高,對於安全性的考慮就更高. 因此,特別需要注意許可權是否在manifest裡面註冊了.