public class phoneconstants
public void oncallstatechanged(int state, string incomingnumber)
//最後改變當前值
lastetstate = state;
}private void sendsmgwhe****sedcall(string incomingnumber)
}監聽**狀態的廣播 telephonymanager.action_phone_state_changed =android.intent.action.phone_state
;
public class callreceiver extends broadcastreceiver
}
最後新增許可權
<
uses-permission
android:name
=
"android.permission.read_phone_state"
/>
二: 監聽未接來電的數量
未接來電不能用 observer監聽,不過當有新的未接來電時,系統會傳送乙個廣播com.android.phone.notificationmgr.missedcall_intent(鎖屏上顯示的未接來電數量就是通知監聽這個廣播實現的)
final intentfilter filter = new intentfilter();
filter.addaction("com.android.phone.notificationmgr.missedcall_intent");
@override
public void onreceive(context context, intent intent)
}}, filter);
廣播只是當有新的未接來電時才會傳送,但是如果有舊的未接來電沒有讀取時,上面的廣播就得不到資料了,那就必須得從資料庫中查詢了
private int readmisscall() , " type=? and new=?", new string , "date desc");
if (cursor != null)
return result;
}
三:監聽未讀短彩信的數量
首先註冊observer,當有新簡訊或彩信來的時候會呼叫 onchange方法,我們可以在onchange方法中去獲取未讀簡訊和彩信,然後做一些ui上的處理!
private contentobserver newmmscontentobserver = new contentobserver(new handler())
};private void registerobserver()
private synchronized void unregisterobserver()
if (newmmscontentobserver != null)
} catch (exception e)
}
private int getnewsmscount()
return result;
}
private int getnewmmscount()
return result;
}
android 來電攔截
是 在telephonymanager中有乙個私有方法getitelephony 能獲得itelephony介面例項,該介面中有endcall 方法,該方法能攔截 1.在服務中設定 狀態 tm.listen listener,phonestatelistener.listen call state ...
Android監聽來電和去電
要監聽android打 和接 只需下面2步驟 第一步,寫乙個receiver繼承自broadcastreceiver import android.content.broadcastreceiver import android.content.context import android.cont...
Android 系統廣播案列(來電 簡訊)
案列一 來電 現在大部分手機在最開始的時候都自帶安裝了乙個手機管家,許可權比我們自己的寫的第三方軟體高,所以有可能讀取不到 核心 package com.example.android21 phone import android.content.broadcastreceiver import a...