Android 判断当前网络连接是否可用、打开设置网络界面
16lz
2021-01-23
在Android平台上开发基于网络的应用,必然需要去判断当前的网络连接情况。
package com.example.network;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;public class NetworkUtil {/** * 检查网络是否可用 * * @param context * @return */public static boolean isNetworkAvailable(Context context) {ConnectivityManager manager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);if (manager == null) {return false;}NetworkInfo networkinfo = manager.getActiveNetworkInfo();if (networkinfo == null || !networkinfo.isAvailable()) {return false;}return true;}}
当网络不可用的时候,我们应该提供一个 界面让用户区设置网络连接。Android 2.3以上跟Android 2.3以前的设置方式是不一样的,我们需要判断一下。
package com.example.network;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.ComponentName;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.util.Log;import android.view.Menu;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overrideprotected void onStart() {Log.i("MainActivity", "onStart");if (!NetworkUtil.isNetworkAvailable(this)) {showSetNetworkUI(this);} else {Toast.makeText(this, "网络可用...", 0).show();}super.onStart();}@Overrideprotected void onResume() {Log.i("MainActivity", "onStart");super.onResume();}/* * 打开设置网络界面 */public void showSetNetworkUI(final Context context) {// 提示对话框AlertDialog.Builder builder = new Builder(context);builder.setTitle("网络设置提示").setMessage("网络连接不可用,是否进行设置?").setPositiveButton("设置", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubIntent intent = null;// 判断手机系统的版本 即API大于10 就是3.0或以上版本if (android.os.Build.VERSION.SDK_INT > 10) {intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);} else {intent = new Intent();ComponentName component = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");intent.setComponent(component);intent.setAction("android.intent.action.VIEW");}context.startActivity(intent);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}}).show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
记得在 Manifest文件中加入以下权限
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
更多相关文章
- Android 用AsyncTask下载网络图片并显示百分比
- [Android UI界面] android中仿iphone实现listview的反弹效果
- android中跳转系统自带的界面
- Web后台和Android前端之间的网络通信
- Android网络操作
- Android控件笔记——在界面中显示图片
- Android自动提示--AutoCompleteTextView、MultiAutoCompleteText