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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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);
        }
    }
 
}