数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类 全部分类技术牛文全部分类教程最新 网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava 新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销 开发数据库服务器系统虚拟化云计算 嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

Android 实现自动接听和挂断电话功??/a>[代码]
迷途d书童

来源:本网整理
<无详细内??gt; scrolltotop.offset(100,120); scrolltotop.init();

[1].[代码] [Java]代码 跳至 [1]

添加权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>

main.xml
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    androidrientation="vertical" android:layout_width="fill_parent"  
    android:layout_height="fill_parent">  
    <RadioGroup android:layout_height="wrap_content"  
        android:layout_width="fill_parent" android:id="@+id/rGrpSelect">  
        <RadioButton android:layout_height="wrap_content"  
            android:layout_width="fill_parent" android:id="@+id/rbtnAutoAccept"  
            android:text="所有来电自动接??></RadioButton>  
        <RadioButton android:layout_height="wrap_content"  
            android:layout_width="fill_parent" android:id="@+id/rbtnAutoReject"  
            android:text="所有来电自动挂??></RadioButton>  
    </RadioGroup>  
    <ToggleButton android:layout_height="wrap_content"  
        android:layout_width="fill_parent" android:id="@+id/tbtnRadioSwitch"  
        android:textOn="Radio已经启动" android:textOff="Radio已经关闭"  
        android:textSize="24dip" android:textStyle="normal"></ToggleButton>  
    <ToggleButton android:layout_height="wrap_content"  
        android:layout_width="fill_parent" android:id="@+id/tbtnDataConn"  
        android:textSize="24dip" android:textStyle="normal" android:textOn="允许数据连接"  
        android:textOff="禁止数据连接"></ToggleButton>  
</LinearLayout>  


PhoneUtils.java是手机功能类,从TelephonyManager中实例化ITelephony并返回,源码如下??
package com.testTelephony;  
  
import java.lang.reflect.Field;  
import java.lang.reflect.Method;  
import com.android.internal.telephony.ITelephony;  
import android.telephony.TelephonyManager;  
import android.util.Log;  
  
public class PhoneUtils {  
    /** 
     * 从TelephonyManager中实例化ITelephony,并返回 
     */  
    static public ITelephony getITelephony(TelephonyManager telMgr) throws Exception {  
        Method getITelephonyMethod = telMgr.getClass().getDeclaredMethod("getITelephony");  
        getITelephonyMethod.setAccessible(true);//私有化函数也能使?? 
        return (ITelephony)getITelephonyMethod.invoke(telMgr);  
    }  
      
    static public void printAllInform(Class clsShow) {    
        try {    
            // 取得所有方??   
            Method[] hideMethod = clsShow.getDeclaredMethods();    
            int i = 0;    
            for (; i < hideMethod.length; i++) {    
                Log.e("method name", hideMethod.getName());    
            }    
            // 取得所有常??   
            Field[] allFields = clsShow.getFields();    
            for (i = 0; i < allFields.length; i++) {    
                Log.e("Field name", allFields.getName());    
            }    
        } catch (SecurityException e) {    
            // throw new RuntimeException(e.getMessage());    
            e.printStackTrace();    
        } catch (IllegalArgumentException e) {    
            // throw new RuntimeException(e.getMessage());    
            e.printStackTrace();    
        } catch (Exception e) {    
            // TODO Auto-generated catch block    
            e.printStackTrace();    
        }    
    }    
}  
testTelephony.java是主类,使用PhoneStateListener监听通话状态,以及实现上述4种电话控制功能,源码如下??
package com.testTelephony;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.telephony.PhoneStateListener;  
import android.telephony.TelephonyManager;  
import android.util.Log;  
import android.view.View;  
import android.widget.RadioGroup;  
import android.widget.ToggleButton;  
  
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) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        telMgr= (TelephonyManager)getSystemService(TELEPHONY_SERVICE);  
        telMgr.listen(new CallStateListener(), CallStateListener.LISTEN_CALL_STATE);  
          
        PhoneUtils.printAllInform(TelephonyManager.class);  
          
        rg = (RadioGroup)findViewById(R.id.rGrpSelect);  
        rg.setOnCheckedChangeListener(new CheckEvent());  
        tbtnRadioSwitch=(ToggleButton)this.findViewById(R.id.tbtnRadioSwitch);  
        tbtnRadioSwitch.setOnClickListener(new ClickEvent());  
        try {  
            tbtnRadioSwitch.setChecked(PhoneUtils.getITelephony(telMgr).isRadioOn());  
        }  catch (Exception e) {  
            Log.e("error",e.getMessage());  
        }  
        tbtnDataConn=(ToggleButton)this.findViewById(R.id.tbtnDataConn);  
        tbtnDataConn.setOnClickListener(new ClickEvent());  
        try {  
            tbtnDataConn.setChecked(PhoneUtils.getITelephony(telMgr).isDataConnectivityPossible());  
        }  catch (Exception e) {  
            Log.e("error",e.getMessage());  
        }  
    }  
      
    /** 
     * 来电时的操作 
     * @author GV 
     * 
     */  
    public class CheckEvent implements RadioGroup.OnCheckedChangeListener{  
  
        @Override  
        public void onCheckedChanged(RadioGroup group, int checkedId) {  
            testTelephony.this.checkedId=checkedId;  
        }  
    }  
      
    /** 
     * Radio和数据连接的开??
     * @author GV 
     * 
     */  
    public class ClickEvent implements View.OnClickListener{  
  
        @Override  
        public void onClick(View v) {  
            if (v == tbtnRadioSwitch) {  
                try {  
                    PhoneUtils.getITelephony(telMgr).setRadio(tbtnRadioSwitch.isChecked());  
                } catch (Exception e) {  
                    Log.e("error", e.getMessage());  
                }  
            }  
            else if(v==tbtnDataConn){  
                try {  
                    if(tbtnDataConn.isChecked())  
                        PhoneUtils.getITelephony(telMgr).enableDataConnectivity();  
                    else if(!tbtnDataConn.isChecked())  
                        PhoneUtils.getITelephony(telMgr).disableDataConnectivity();  
                } catch (Exception e) {  
                    Log.e("error", e.getMessage());  
                }     
            }  
        }  
    }  
      
    /** 
     * 监视电话状??
     * @author GV 
     * 
     */  
    public class CallStateListener extends PhoneStateListener {  
        @Override  
        public void onCallStateChanged(int state, String incomingNumber) {  
            if(state==TelephonyManager.CALL_STATE_IDLE)//挂断  
            {  
                Log.e("IDLE",incomingNumber);  
            }  
            else if(state==TelephonyManager.CALL_STATE_OFFHOOK)//接听  
            {  
                Log.e("OFFHOOK",incomingNumber);  
            }  
            else if(state==TelephonyManager.CALL_STATE_RINGING)//来电  
            {  
                if(testTelephony.this.checkedId==R.id.rbtnAutoAccept)  
                {  
                    try {  
                        //需??lt;uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />   
                        PhoneUtils.getITelephony(telMgr).silenceRinger();//静铃  
                        PhoneUtils.getITelephony(telMgr).answerRingingCall();//自动接听  
                          
                    } catch (Exception e) {  
                        Log.e("error",e.getMessage());  
                    }     
                }  
                else if(testTelephony.this.checkedId==R.id.rbtnAutoReject)  
                {  
                    try {  
                        PhoneUtils.getITelephony(telMgr).endCall();//挂断  
                        PhoneUtils.getITelephony(telMgr).cancelMissedCallsNotification();//取消未接显示  
                    } catch (Exception e) {  
                        Log.e("error",e.getMessage());    
                    }  
                }  
            }  
            super.onCallStateChanged(state, incomingNumber);  
        }  
    }  
} 
SyntaxHighlighter.autoloader( 'applescript /js/sh309/scripts/shBrushAppleScript.js?t=1451961936000', 'actionscript3 as3 /js/sh309/scripts/shBrushAS3.js?t=1451961936000', 'bash shell /js/sh309/scripts/shBrushBash.js?t=1451961936000', 'coldfusion cf /js/sh309/scripts/shBrushColdFusion.js?t=1451961936000', 'cpp c /js/sh309/scripts/shBrushCpp.js?t=1451961936000', 'obj-c objc /js/sh309/scripts/shBrushObjC.js?t=1451961936000', 'c# c-sharp csharp /js/sh309/scripts/shBrushCSharp.js?t=1451961936000', 'css /js/sh309/scripts/shBrushCss.js?t=1451961936000', 'delphi pascal /js/sh309/scripts/shBrushDelphi.js?t=1451961936000', 'diff patch pas /js/sh309/scripts/shBrushDiff.js?t=1451961936000', 'erl erlang /js/sh309/scripts/shBrushErlang.js?t=1451961936000', 'groovy /js/sh309/scripts/shBrushGroovy.js?t=1451961936000', 'haxe hx /js/sh309/scripts/shBrushHaxe.js?t=1451961936000', 'java /js/sh309/scripts/shBrushJava.js?t=1451961936000', 'jfx javafx /js/sh309/scripts/shBrushJavaFX.js?t=1451961936000', 'js jscript javascript /js/sh309/scripts/shBrushJScript.js?t=1451961936000', 'perl pl /js/sh309/scripts/shBrushPerl.js?t=1451961936000', 'php /js/sh309/scripts/shBrushPhp.js?t=1451961936000', 'text plain /js/sh309/scripts/shBrushPlain.js?t=1451961936000', 'py python /js/sh309/scripts/shBrushPython.js?t=1451961936000', 'ruby rails ror rb /js/sh309/scripts/shBrushRuby.js?t=1451961936000', 'scala /js/sh309/scripts/shBrushScala.js?t=1451961936000', 'sql /js/sh309/scripts/shBrushSql.js?t=1451961936000', 'vb vbnet /js/sh309/scripts/shBrushVb.js?t=1451961936000', 'xml xhtml xslt html /js/sh309/scripts/shBrushXml.js?t=1451961936000' ); SyntaxHighlighter.all();

  • 本文相关:
  • 了解Android应用程序结构???小代码
  • 使用 Python 编写 Android ??UI 应用
  • Android 布局:头部、中间、尾??/a>[代码]
    walen
  • Android下Excel的操??/a>[代码]
    Elbiz
  • android 多媒体开发高级编??/a>[代码]
    liu447182356long
  • android页面特效大集??/a>[代码]
    蜗牛TT
  • 用Sqlite存储数据,实现增删改??/a>[代码]
    haoxuan
  • Android刷卡库(NDK??- mslib
  • android读取apk中已经存在的数据库信??/a>[代码]
    岳静
  • Android:使用Speech To Text API进行语音到文本转??/a>[代码]
    tsl0922
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved