- 论坛徽章:
- 0
|
网上一位哥们写的例程,根据这里例程理解了一下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 |
|