2015-03-31 30 views
-4

我知道很多人會發現這個問題不值得,但我新到Android development.I想知道關於服務和廣播receivers.I已經看到,在廣播接收器的一些演示應用程序和做了幾個演示應用程序。現在我正在努力完成我需要幫助。 我想創建一個在後臺運行的服務,它會告訴用戶有關網絡或WiFi可用或不。請幫助我。謝謝服務和廣播接收器來檢查網絡的可用與否

回答

0

你可以使用一個廣播接收器

<receiver 
      android:name=".NetworkChangeReceiver" 
      android:label="NetworkChangeReceiver" > 
      <intent-filter> 
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
       <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
      </intent-filter> 
     </receiver> 

在你的接收機類

public class NetworkChangeReceiver extends BroadcastReceiver { 
    public static Internet internet; 
    public static String changestatus = ""; 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 
     String status = NetworkUtil.getConnectivityStatusString(context); 

     if (status.equals("Not connected to Internet")) { 
      if (context != null && internet != null) { 
       internet.net(); 
      } 
     } 
     changestatus = status; 
    } 

    public interface Internet { 
     public void net(); 
    } 
} 

網絡的Util類來檢查連接

public class NetworkUtil { 

    public static int TYPE_WIFI = 1; 
    public static int TYPE_MOBILE = 2; 
    public static int TYPE_NOT_CONNECTED = 0; 


    public static int getConnectivityStatus(Context context) { 
     if (context==null) { 
      return 0; 
     } 
     ConnectivityManager cm = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
     if (null != activeNetwork) { 
      if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) 
       return TYPE_WIFI; 

      if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) 
       return TYPE_MOBILE; 
     } 
     return TYPE_NOT_CONNECTED; 
    } 

    public static String getConnectivityStatusString(Context context) { 
     int conn = NetworkUtil.getConnectivityStatus(context); 
     String status = null; 
     if (conn == NetworkUtil.TYPE_WIFI) { 
      status = "Wifi enabled"; 
     } else if (conn == NetworkUtil.TYPE_MOBILE) { 
      status = "Mobile data enabled"; 
     } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) { 
      status = "Not connected to Internet"; 
     } 
     return status; 
    } 
} 

在你的活動中,你可以實現網絡接口

public class MyActivity extends FragmentActivity implements 
     Internet { 

    @Override 
    protected void onCreate(Bundle arg0) { 
     // TODO Auto-generated method stub 
     super.onCreate(arg0); 

     NetworkChangeReceiver.internet = this; 
    } 


    @Override 
    public void net() { 
     // TODO Auto-generated method stub 
     //Show Alert connection is not avaiable 
    } 


} 
+0

不我必須使用一個服務??? – Anuj 2015-03-31 10:30:31

+0

no..if連接丟失的廣播被調用和接口將推動狀態的活動,你能在那裏檢查,並顯示在網上容易消息()方法 – 2015-03-31 10:31:46

+0

但是,如果用戶終止應用程序是什麼,然後怎麼樣我會不會知道abt netwirk的變化? – Anuj 2015-03-31 10:37:06

-1

有很多解決方案可用於堆棧溢出和其他網站。一個很好的解決方案是here ..