Android開發 簡訊電話攔截 接聽電話

2021-07-15 01:34:53 字數 1578 閱讀 6490

1.簡訊攔截

首先需要宣告的是,

android4.4版本

以上,如果想做到簡訊攔截,

必須成為

default sms

,把所有簡訊相關的功能都包攬了,然後再做簡訊攔截。但這種做法,適配性和相容性的工作是非常巨大的,簡訊、wapush(多種)、彩信、單雙卡等等,相當於要求簡訊攔截類的軟體要整合乙個功能非常完善的通訊錄類應用的功能。

但是即使攔截不到簡訊,同樣是可以接收到簡訊的內容。4.4版本以前沒有問題。

簡訊廣播接收者就不用多說了,**如下所示,業務邏輯一般通過資料庫查詢實現,通過繼承sqliteopenhelper類構建資料庫,再自定義乙個提供資料庫增刪改查的dao類即可。

private class innersmsreceiver extends broadcastreceiver }}

2.**攔截/接聽2.1 攔截**,首先需要監聽**的狀態。這個我們最好還是寫在服務裡吧。

public class interceptservice extends service

@override

public void oncreate()

@override

public void ondestroy()

private class mylistener extends phonestatelistener}}

}

2.1 攔截**的邏輯可以仿照原始碼寫。首先拿到binder物件。

ibinder ibinder = servicemanager.getservice(telephony_service);
2.2 由於servicemanager被系統隱藏了,所以可以用反射的方法拿到。

class clazz = interceptservice.class.getclassloader().loadclass("android.os.servicemanager");

method method = clazz.getdeclaredmethod("getservice", string.class);

ibinder ibinder = (ibinder) method.invoke(null, telephony_service);

2.3 接著就可以呼叫binder裡的方法了。不僅可以拿到endcall()結束通話**的方法,也可以拿到answerringcall()接聽**的方法。這樣就完成了整個結束通話**的邏輯。

itelephony.stub.asinte***ce(ibinder).endcall();

//用於接聽** itelephony.stub.asinte***ce(ibinder).answerringingcall();

Android 打電話和發簡訊

1.itelephony介面和isms介面以及aidl 在我們的 android應用中,當需要實現 撥號時,我們需要進行如下呼叫 itelephony phone itelephony itelephony.stub.asinte ce servicemanager.getservice phon ...

android打電話 發簡訊實現

intent intent newintent intent.action call,uri.parse tel 156666666666 this.startactivity intent 加上打 的許可權 發簡訊 發簡訊 string content 1111111111111111111111...

發簡訊 打電話

發簡訊 1.新增發簡訊的許可權 android name android.permission.send sms 2.顯示的提醒使用者是否允許adk使用簡訊傳送訊息 activitycompat.requestpermissions this,new string,1 3.獲取控制項並新增響應事件。...