發送dtmf鍵盤事件(模擬通話界面鍵盤事件)

轉載請聲明:http://bbs.niuzhi.cc/thread-22-1-1.html


1.第一步,在代碼里加上以下方法

/**
	 * 說明:發送dtmf事件
	 * Author:陳偉斌
	 * 2012-12-13
	 * @param keycode
	 */
	public void sendDTMF(char keycode) {
		try {
			
			Class cls_phoneFactory = Class
					.forName("com.android.internal.telephony.PhoneFactory");
			Method method_getDefaultPhone = cls_phoneFactory.getDeclaredMethod(
					"getDefaultPhone", null);
			method_getDefaultPhone.setAccessible(true);
			Object obj_phone = method_getDefaultPhone.invoke(null);
			Method method_sendDTMF = obj_phone.getClass().getDeclaredMethod(
					"sendDtmf", char.class);
			method_sendDTMF.invoke(obj_phone, keycode);
			
		} catch (Exception e) {
			e.printStackTrace();


		}
	}

2.在AndroidManifest.xml裏增加 

android:sharedUserId="android.uid.phone"

當然也可以是

android:sharedUserId="android.uid.system"


3.在application節點增加

android:process="com.android.phone"

如果你覺得不合適,也可以在你要增加這個事件的activity節點加,效果一樣


4.這時是不能直接運行的,運行的話會報一個錯

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

這時,需要對生成的apk文件進行系統簽名

沒有簽名工具的話可以到這裏下載

http://download.csdn.net/detail/c_weibin/4883635

5.大功告成


另外:如果手頭上有源碼,直接在IncallScreen.java裏自己寫個廣告,監聽自己應用裏的dtmf事件也行,然後在收一廣播後,執行mPhone.sendDtmf(keycode);注意,這裏的mPhone 不需要自己去初使化,就這樣子寫就行了!這種方式就不會出現跨線程操作,導致一些很奇怪的現象,也沒有權限限制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章