免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1603 | 回复: 0
打印 上一主题 下一主题

手机来电处理 intent 的一个小说明 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-22 12:54 |只看该作者 |倒序浏览

网上一位哥们写的例程,根据这里例程理解了一下intent的使用.下面这个是来电话的处理逻辑.
引入了 import android.telephony.TelephonyManager;
由于当来电话时执行该class,那么应该继承BroadcastReceiver 等待广播通知.BroadcastReceiver
有一个方法onReceive是入口,所以入口应该在这个方法中,方法带了两个参数 context,intent.
         TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
获取服务的信息,Service.TELEPHONY_SERVICE应该是一个全局性的东西,Service有很多成员,系统性的.
tm.getCallState() == TelephonyManager.CALL_STATE_RINGING  查看是否来电话了.TelephonyManager.CALL_STATE_RINGING也是全局性的东西,进入android.telephony.TelephonyManager类,可以看到有很多标志状态的成员.如果真的有电话来了,
Bundle bundle = intent.getExtras();
             String incomingNumber= bundle.getString("incoming_number");
incoming_number 这个也是系统的关键字,关键字很多阿!上面这两句看出,通过intent把一些东西付给了系统类实例对象bundle,这个对象取出了incoming_number对应的值.
intent和context该怎么理解呢?
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
public class InComingCallReceiver extends BroadcastReceiver {
   
    @Override
    public void onReceive(Context context, Intent intent) {
         
         TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
         if(tm.getCallState() == TelephonyManager.CALL_STATE_RINGING){
             Bundle bundle = intent.getExtras();
             String incomingNumber= bundle.getString("incoming_number");
            
         }
    }
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/80919/showart_1972945.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP