編輯:初級開發
但是,電話呼入則沒有類似的機制。不過,綜合網上的一些資料,通過以下大體的步驟,則可以實現拒接電話:
1、注冊broadcast receiver,監視手機狀態:
Java代碼
< receiver android:name=".PhoneBroadcastReceiver">
< intent-filter>
< action android:name="android.intent.action.PHONE_STATE" />
< /intent-filter>
< /receiver>
< receiver android:name=".PhoneBroadcastReceiver">
< intent-filter>
< action android:name="android.intent.action.PHONE_STATE" />
< /intent-filter>
< /receiver>
當手機接收到電話時,則會觸發該broadcast receiver。
2、最重要的,就是取得可以控制電話的API。這些API貌似是android內部的接口,並未暴露。具體方式參見該帖子:http://topic.csdn.Net/u/20091226/00/09e2979b-7c8c-4991-856d- 586a278875c0.Html
使用時需要手動添加import:
Java代碼
import com.android.internal.telephony.ITelephony;
import com.android.internal.telephony.ITelephony;
同樣的方式,在stackoverflow上也有人大致地提了下:http://stackoverflow.com/questions/1083527/how-to-block-calls-in-android
值得注意的是,使用這種方式拒接來電,broadcast receiver會被觸發兩次。第一次是收到來電,第二次則是由於調用endCall拒接了後觸發。我們在處理自己的程序邏輯時,可以通過 ITelephony.getCallState來區分。該函數返回1表示來電,0表示拒接來電。
最後,這個方法有時候依然會出現系統接聽電話的界面,並且,通話記錄裡也會有拒接電話的記錄。這個原因大概也是系統底層在處理這塊邏輯時,系統邏輯和通知broadcast receiver的存在先後順序。這篇文章中分析了部分源碼,也算是提個醒。
1.android模擬器采用的是開源工程Qemu,Qemu是Linux 下的著名模擬器2. kernel-qemu是內核鏡像3. ramdisk.img是文件系統,如果
Intent比較簡單,類似消息,發送給別的activity,別的activity會立即執行我主要說說什麼是PendingIntent以及它的執行過程以alarm ser
完整代碼如下:package com.example.android.apis.app;import com.example.android.apis.R;import
移動開發大潮興起於蘋果公司的iPhone,移動浏覽器也隨之得到迅猛發展,特別是對Html5、CSS3以及CSS動畫的支持。之後Google公司推出android更是開啟