Android 未接來電及未讀短彩信的監聽實現

2021-06-26 12:14:34 字數 1818 閱讀 4315

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-permissionandroid: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...