我最後使用的辦法,網路上搜到的:
public class NetworkUtils { public final static int NONE = 0; //無網路 public final static int WIFI = 1; //Wi-Fi public final static int MOBILE = 2; //3G,GPRS /** * 擷取當前網路狀態 * @param context * @return */ public static int getNetworkState(Context context){ ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //行動電話通訊判斷 State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); if(state == State.CONNECTED||state == State.CONNECTING){ return MOBILE; } //Wifi網路判斷 state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); if(state == State.CONNECTED||state == State.CONNECTING){ return WIFI; } return NONE; } }
1.從API 16開始,有了這個方法:isActiveNetworkMetered
(),判斷當前網路是否是計費網路,但是從16才開始有,那麼16之前的怎麼判斷呢?
2.有時候你需要監聽網路的變化,比如你做了一個下載的管理器,當網路消失的適合,你需要能夠暫停,當網路有的適合,你需要能夠繼續下載。
http://blog.csdn.net/hehe9737/article/details/7477511
android監聽網路變化問題
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=209190&fromuid=511991
(出處: eoe Android開發人員社區)
如何避免網路變化的多次廣播
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=193562&fromuid=511991
(出處: eoe Android開發人員社區)
http://developer.android.com/reference/android/telephony/PhoneStateListener.html
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=193562
如何避免網路變化的多次廣播
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=193562&fromuid=511991
(出處: eoe Android開發人員社區)
http://www.apkbus.com/android-66880-1-1.html