1. 程式人生 > >Android自動接聽和結束通話電話實現原理

Android自動接聽和結束通話電話實現原理

轉自:http://bbs.51cto.com/thread-1078059-1.html

一  前言

這兩天要研究類似白名單黑名單以及手勢自動接聽的一些功能,所以呢,自然而然的涉及到怎麼自動接聽/結束通話電話的功能了。
對於自動接聽這一塊,android4.1版本及其以上的版本和之前的版本處理邏輯不太一樣,因為google增加了許可權檢查...所以,按照以前的方法可能不能實現自動接聽了.


二  android低版本自動接聽/結束通話實現

1. copy android原始碼的ITelephony.aidl檔案到自己的專案
為什麼要copy這個檔案到自己的專案中呢?這是因為接聽/結束通話電話的方法在介面ITelephony.java裡面,而這個介面時隱藏的,也就是sdk開發是看不到這個介面的。


比如:

01 packagecom.android.internal.telephony;
02 /**
03 * Interface used to interact with the phone.  Mostly this is used by the
04 * TelephonyManager class.  A few places are still using this directly.
05
* Please clean them up if possible and use TelephonyManager insteadl.
06 *
07 * {@hide}
08 */
09 publicinterface ITelephony extendsandroid.os.IInterface
10 {
11 ...
12 }
正如上面所說,這個介面ITelephony.java是隱藏的(@hide),它的包名時com.android.internal.telephony,所以,我們在我們的專案裡面新建同樣的一個包,
然後把系統的ITelephony.aidl拷貝過來.

由於ITelephony.aidl關聯了NeighboringCellInfo.aidl,所以也一併拷貝過來。
不過要注意的是,NeighboringCellInfo.aidl所在的的包名是android.telephony;所以,你要新建一個包android.telephony,然後把NeighboringCellInfo.aidl放到
包android.telephony裡面。
NeighboringCellInfo.aidl的定義:
1 packageandroid.telephony;
2

相關推薦

Android自動接聽結束通話電話實現原理

轉自:http://bbs.51cto.com/thread-1078059-1.html 一  前言 這兩天要研究類似白名單黑名單以及手勢自動接聽的一些功能,所以呢,自然而然的涉及到怎麼自動接聽/結束通話電話的功能了。 對於自動接聽這一塊,android4.1

android 來電接聽結束通話 支援目前所有版本

 ////////////////////////////////////結束通話電話///////////////////////////////////////     try {getITelephony(telmanager).endCall();} catch (

android 接聽結束通話實現方式

注意:android2.3版本及以上不支援下面的自動接聽方法。 (會拋異常:java.lang.SecurityException: Neither user xxxxx nor current process hasandroid.permission.MODIFY_PHONE_STATE.)

Android通過程式接聽或者結束通話電話

這篇文章教你如何幫助使用者自動接聽或者結束通話來電。當然並不是我原創的程式碼,我只不過是把stackoverflow上的一些程式碼整合了一下,做個程式碼的二傳手。 原始碼 AcceptOrRejectCallDemo 原始碼中用了MVP的模式,只是最簡

Android 藍芽開發(八)hfp接聽結束通話電話

本文已授權微信公眾號 fanfan程式媛 獨家釋出 掃一掃文章底部的二維碼或在微信搜尋 fanfan程式媛 即可關注 繼續研究hfp相關功能。藍芽耳機可以控制手機接聽、拒接、結束通話電話,撥打電話等功能。本文主要分析下起這些操作的大致流程。 在

Android撥打、接聽結束通話電話操作

Android2.3之前的系統可以通過反射機制呼叫ITelephone的方法來結束通話電話,因為Android2.3以後增加了對permission  android.permission.MODIFY_PHONE_STATE 的限制,之前的反射的方法不能用了,我們可以通過

android結束通話電話

//結束通話電話,需要呼叫系統底層的方法,要用哪個到反射拿底層方法 public void endcall(){ //載入serviceManager的位元組碼 Class clazz=CallSmsSafeService.clas

利用JAVA反射機制訪問ITelephony隱藏介面(android程式中結束通話電話

這兩天研究如何利用程式結束通話電話。發現在Android1.0的時候Phone中提供了提供了endCall方法,而1.5以後這個方法被設定為私有了。如此有了如下研究: /** * 利用JAVA反射機制呼叫ITelephony的endCall()結束通話。 */

轉載:Android 靜默安裝智慧安裝的實現方法

1 簡介 最近研究了Android的靜默安裝和智慧安裝,於是寫部落格記錄一下。  靜默安裝就是無聲無息的在後檯安裝apk,沒有任何介面提示。  智慧安裝就是有安裝介面,但全部是自動的,不需要使用者去點選。  首先強調兩點: 靜默安裝必須要root許可權 智慧安裝必須

android使用ViewpagerTabLayout結合fragment實現首頁底部導航的效果

前言 現如今幾乎每一款手機APP首頁都採用了底部導航的功能,現在我們使用Viewpager和TabLayout結合fragment來實現該功能。 效果圖如下: 這裡有一個問題,TabLayout的五個icon在模擬器中寬度無法充滿螢幕,暫時還不知道為什麼,手機能夠正

Android開發ViewPagerFragment結合使用實現新聞類app( 三 )(基本成型的app)

//該類為我們的標題欄的自定義View public class MyLinearLayout extends LinearLayout { public MyLinearLayout(Context context, AttributeSet attrs) { super(cont

Android之ToolBar自定義ToolBar實現沉浸式狀態列

沉浸式狀態列確切的說應該叫做透明狀態列。一般情況下,狀態列的底色都為黑色,而沉浸式狀態列則是把狀態列設定為透明或者半透明。 沉浸式狀態列是從android Kitkat(Android 4.4)開始出

Android動態顯示隱藏狀態列/實現沉浸式狀態列

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // getWindow().setFlags(WindowMa

Android自動批量靜默安裝應用指令碼實現

1、需求 1)自動安裝APK到不同的手機 2)靜默安裝,不需要通過螢幕點選直接安裝 3)支援安裝多個應用到手機端 2、靜默安裝實現 pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH

Android記憶體快取磁碟快取的實現

記憶體快取 Android自帶的LruCache實現了記憶體快取,LruCache內部主要使用LinkedHashMap的特性來實現,因為LinkedHashMap可支援FIFO和LRU訪問。 LinkedHashMap的特點 LinkedHashMap繼

Android自動dump hprof檔案的功能實現

要實現這個功能,必須提升許可權,必須滿足以下兩個條件之一 1、在root的裝置上執行 2、如果機子沒root,需要在app的manifest檔案中新增sharedUid,但是使用了這個的話,需要對apk檔案進行系統簽名 android:sharedUserId="andro

自旋鎖,讀寫鎖順序鎖的實現原理

並且 保護 表達 min 返回 create creat rwlock ini 常用的同步原語鎖,到多核處理器時代鎖已經是必不可少的同步方式之一了。無論設計多優秀的多線程數據結構,都避不開有競爭的臨界區,此時高效的鎖顯得至關重要。鎖的顆粒度是框架/程序設計者所關註的,

AFNetworking 3.0 使用詳解 源碼解析實現原理

數據 syn ria 特定 style conn afn rda gre AFN原理&& AFN如何使用RunLoop來實現的: NSString * requestURL = @"http://119.254.98.136/api/v1/web/

Java的Executor框架執行緒池實現原理

一,Java的Executor框架 1,Executor介面 public interface Executor {     void execute(Runnable command); } Executor介面是Executor框架中最基礎的部分,定義了一個用於

(精)Spring IOC核心原始碼學習III:bean標籤自定義標籤實現原理

本文將解析spring bean定義標籤和自定義標籤的解析實現原理。這裡說的標籤僅限於以xml作為bean定義描述符的spring容器,繼承AbstractXmlApplicationContext的一些子 容器,如XmlApplicationContext、ClassPat