admin 管理员组

文章数量: 1086019


2024年3月18日发(作者:xmlschema版本)

import ;

import ;

import hony;

import onyManager;

import ;

public class PhoneUtils {

/**

* 从TelephonyManager中实例化ITelephony,并返回

*/

static public ITelephony getITelephony(TelephonyManager telMgr)

Exception {

Method getITelephonyMethod

ss().getDeclaredMethod("getITelephony");

essible(true);//私有化函数也能使用

throws

=

return (ITelephony)(telMgr);

}

static public void printAllInform(Class clsShow) {

try {

// 取得所有方法

Method[] hideMethod = laredMethods();

int i = 0;

for (; i < ; i++) {

Log.e("method name", e());

}

// 取得所有常量

Field[] allFields = lds();

for (i = 0; i < ; i++) {

Log.e("Field name", e());

}

} catch (SecurityException e) {

// throw new RuntimeException(sage());

tackTrace();

} catch (IllegalArgumentException e) {

// throw new RuntimeException(sage());

tackTrace();

} catch (Exception e) {

// TODO Auto-generated catch block

tackTrace();

}

}

}

是主类,使用PhoneStateListener监听通话状态,以及实现上述

4种电话控制功能,源码如下:

package lephony;

import ty;

import ;

import tateListener;

import onyManager;

import ;

import ;

import roup;

import Button;

public class testTelephony extends Activity {

/** Called when the activity is first created. */

RadioGroup rg;//来电操作单选框

ToggleButton tbtnRadioSwitch;//Radio开关

ToggleButton tbtnDataConn;//数据连接的开关

TelephonyManager telMgr;

CallStateListener stateListner;

int checkedId=0;

@Override

public void onCreate(Bundle savedInstanceState) {

te(savedInstanceState);

setContentView();

telMgr= (TelephonyManager)getSystemService(TELEPHONY_SERVICE);

(new

_CALL_STATE);

CallStateListener(),

llInform();

rg = (RadioGroup)findViewById(lect);

heckedChangeListener(new CheckEvent());

tbtnRadioSwitch=(ToggleButton)ewById(dioSwitch);

lickListener(new ClickEvent());

try {

cked(lephony(telMgr).isRadioOn());

} catch (Exception e) {

Log.e("error",sage());

}

tbtnDataConn=(ToggleButton)ewById(taConn);

lickListener(new ClickEvent());

try {

cked(lephony(telMgr).isDataConnectivityP

ossible());

} catch (Exception e) {

Log.e("error",sage());

}

}

/**

* 来电时的操作

* @author GV

*

*/

public class CheckEvent implements kedChangeListener{

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

dId=checkedId;

}

}

/**

* Radio和数据连接的开关

* @author GV

*

*/

public class ClickEvent implements kListener{

@Override

public void onClick(View v) {

if (v == tbtnRadioSwitch) {

try {

lephony(telMgr).setRadio(ked());

} catch (Exception e) {

Log.e("error", sage());

}

}

else if(v==tbtnDataConn){

try {

if(ked())

lephony(telMgr).enableDataConnectivity();

else if(!ked())

lephony(telMgr).disableDataConnectivity();

} catch (Exception e) {

Log.e("error", sage());

}

}

}

}

/**

* 监视电话状态

* @author GV

*

*/

public class CallStateListener extends PhoneStateListener {

@Override

public void onCallStateChanged(int state, String incomingNumber) {

if(state==_STATE_IDLE)//挂断

{

Log.e("IDLE",incomingNumber);

}

else if(state==_STATE_OFFHOOK)//接听

{

Log.e("OFFHOOK",incomingNumber);

}

else if(state==_STATE_RINGING)//来电

{

if(dId==toAccept)

{

try {

//需要

android:name="_PHONE_STATE" />

lephony(telMgr).silenceRinger();//静铃

lephony(telMgr).answerRingingCall();//

自动接听

} catch (Exception e) {

Log.e("error",sage());

}

}

else if(dId==toReject)

{

try {

lephony(telMgr).endCall();//挂断

lephony(telMgr).cancelMissedCallsNotification();//取消未接显示

} catch (Exception e) {

Log.e("error",sage());

}

}

}

StateChanged(state, incomingNumber);

}

}

}


本文标签: 状态 使用 取得 电话 通话