首页 > 安卓不启动Activity可以用广播启动service吗?

安卓不启动Activity可以用广播启动service吗?

我想利用广播监测网络变化,然后利用广播启动一个Service,但是发现不把程序运行到后台的话,service不会被启动,请问是什么原因?

    public class NetReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            try{
            
                
                if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {  
                    NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);  
                    if (info.getState().equals(NetworkInfo.State.CONNECTED)) {  

                   
                        String ip = new getIP().getWIFILocalIpAdress(context);
    
                        Pattern pattern2 = Pattern.compile("\\d+");
                        Matcher matcher2 = pattern2.matcher(ip);
                        ArrayList<String> IP = new ArrayList<String>();
                        while (matcher2.find()) {
                            IP.add(matcher2.group(0));
                        }
                        SharedPreferences sp;
                        sp = context.getSharedPreferences("userInfo", context.MODE_PRIVATE);
                        String username = sp.getString("USER_NAME", "");
                        String password = sp.getString("PASSWORD", "");
                        int select = sp.getInt("SELECT", 0);
                        String ip_own=sp.getString(ip, "");
                        
                    
    
                        Pattern pattern3 = Pattern.compile("\\d+");
                        Matcher matcher3 = pattern3.matcher(ip_own);
                        ArrayList<String> IP2 = new ArrayList<String>();
                        while (matcher3.find()) {
                            IP2.add(matcher3.group(0));
                        }
                        if ((IP.get(0).equals("172") && IP.get(1).equals("31") && username.length() != 0)||( IP.get(0).equals( IP2.get(0) )&& IP.get(1).equals( IP2.get(1) ) ) ){
                            Intent intent2 = new Intent(context, NetService.class);
    
                            intent2.putExtra("password", password);
                            intent2.putExtra("select", select);
                            intent2.putExtra("username", username);
                            intent2.putExtra("ip", ip);
    
                            context.startService(intent2);
                        }
                    }  
                }  
        
        }catch (Exception e){
            
        }
        }
    }
    
    
    
    

<service android:name=".NetService" >

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</service>

<receiver android:name=".NetReceiver" >
    <intent-filter>
        <action android:name="android.net.wifi.STATE_CHANGE" />
        <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
         <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</receiver>

参照:http://blog.csdn.net/ocean2006/article/d...

【热门文章】
【热门文章】