不弹出拨号盘发送字符

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

class Dtmf {
	private static final String CALL_MANAGER = "com.android.internal.telephony.CallManager";
	private static final String SEND_DTMF = "sendDtmf";
	private static final String GET_INSTANCE = "getInstance";
	private Method mSendDtmfMethod;
	private Object mCallManager;

	public Dtmf() {
		try {
			Class<?> callManagerClass = Class.forName(CALL_MANAGER); // Obtain
																		// an
																		// instance
																		// of
																		// CallManager
			Method getInstanceMethod = callManagerClass.getMethod(GET_INSTANCE);
			mCallManager = getInstanceMethod.invoke(null);
			// Get sendDtmf(char)
			Class<?>[] sendDtmfParamTypes = new Class<?>[] { char.class };
			mSendDtmfMethod = callManagerClass.getMethod(SEND_DTMF, sendDtmfParamTypes);
		} catch (ClassNotFoundException e) {
		} catch (NoSuchMethodException e) {
		} catch (IllegalArgumentException e) {
		} catch (IllegalAccessException e) {
		} catch (InvocationTargetException e) {
		}
	}

	public boolean sendDtmf(char ch) {
		boolean result = false;
		if (mCallManager != null && mSendDtmfMethod != null) {
			try {
				Object res = mSendDtmfMethod.invoke(mCallManager, new Object[] { Character.valueOf(ch) });
				if (res instanceof Boolean) {
					result = ((Boolean) res).booleanValue();
				}
			} catch (IllegalArgumentException e) {
			} catch (IllegalAccessException e) {
			} catch (InvocationTargetException e) {
			}
		}
		return result;
	}
}

 

posted @ 2012-11-16 19:45  pandans  阅读(338)  评论(0编辑  收藏  举报