上次我写过一个关于Android服务检测的,结果那段代码是错误的,根本不能实现,我现在重新发一段正确的。
这次我把检测写成一个服务(Service),使用时在Activity里面调用就行了。

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;

public class GsmStateService extends Service {
	
	exPhoneStateListener psl=new exPhoneStateListener();
	
	private int ib_state;
	
	@Override
	public void onCreate()
	{
		//取得电话服务
		TelephonyManager tm=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
		//注册listener
		tm.listen(psl, PhoneStateListener.LISTEN_SERVICE_STATE);
		System.out.println("test");
	}
	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}
	
	public class exPhoneStateListener extends PhoneStateListener
    {	
    	public void onServiceStateChanged(ServiceState ss)
    	{
    		super.onServiceStateChanged(ss);
    		int state;
    		state=ss.getState();
    		
    		switch(state)
            {
            case ServiceState.STATE_IN_SERVICE:
            	ib_state=1;
            	break;
            case ServiceState.STATE_OUT_OF_SERVICE:
            	ib_state=0;
            	break;
            }
    		Intent i=new Intent("SERVICE_STATE");
    		i.putExtra("STATE", ib_state);
    		sendBroadcast(i);
    	}
    }

}