編輯:關於Android編程
Android中判斷當前網絡是否可用
應用場景:實現判斷當前網絡是否可用
當前有可用網絡,如下圖:
當前沒有可用網絡,如下圖:
實現步驟:
1、獲取ConnectivityManager對象
Context context = activity.getApplicationContext(); // 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理) ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、獲取NetworkInfo對象
// 獲取NetworkInfo對象 NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
3、判斷當前網絡狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) { return true; }
4、在AndroidManifest.xml中添加訪問當前網絡狀態權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
代碼如下:
public class ClassTestDemoActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if (isNetworkAvailable(ClassTestDemoActivity.this)) { Toast.makeText(getApplicationContext(), "當前有可用網絡!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "當前沒有可用網絡!", Toast.LENGTH_LONG).show(); } } /** * 檢查當前網絡是否可用 * * @param context * @return */ public boolean isNetworkAvailable(Activity activity) { Context context = activity.getApplicationContext(); // 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理) ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager == null) { return false; } else { // 獲取NetworkInfo對象 NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo(); if (networkInfo != null && networkInfo.length > 0) { for (int i = 0; i < networkInfo.length; i++) { System.out.println(i + "===狀態===" + networkInfo[i].getState()); System.out.println(i + "===類型===" + networkInfo[i].getTypeName()); // 判斷當前網絡狀態是否為連接狀態 if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; } }
控制台打印出的結果:
Android 關於判斷應用是否有網絡
在Android編程中不少有許多應用需要判斷是否有網絡的問題,現在我就來說說關於網絡的問題吧,源碼如下:
.java
/** * 檢查當前網絡是否可用 * * @param context * @return */ public boolean isNetworkAvailable(Activity activity) { Context context = activity.getApplicationContext(); // 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理) ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager == null) { return false; } else { // 獲取NetworkInfo對象 NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo(); if (networkInfo != null && networkInfo.length > 0) { for (int i = 0; i < networkInfo.length; i++) { System.out.println(i + "===狀態===" + networkInfo[i].getState()); System.out.println(i + "===類型===" + networkInfo[i].getTypeName()); // 判斷當前網絡狀態是否為連接狀態 if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; }
在oncreate()方法中判斷這個方法,具體代碼如下:
.java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(isNetworkAvailable(Maintivity.this){ Toast.makeText(this, "當前有可用網絡!", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(this,"當前沒有網絡!",Toast.LENGTH_LONG).show();} }
另外,還需要添加權限
<!-- 允許應用可以聯網 --> <uses-permission android:name="android.permission.INTERNET" /> <!--允許應用檢查網絡狀況 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
1 智能指針的設計思想 Java和C++語言很重要的一個區別就是Java中沒有指針這個概念,這裡只是沒有這個概念,內部使用時還是用到指針,只是將其
看到很多書中都沒有對PreferenceActivity做介紹,而我正好又在項目中用到,所以就把自己的使用的在這總結一下,也方便日後查找。 PerferenceActiv
Activity是Android系統的4個應用程序組件之一。通過傳統方法顯示的Activity都是充滿整個屏幕,也就是全屏的Activity。事實上,Activity不僅
接到一個新的任務,對現有項目進行代碼混淆。之前對混淆有過一些了解,但是不夠詳細和完整,知道有些東西混淆起來還是比較棘手的。不過幸好目前的項目不是太復雜(針對混淆這塊來說)