Android平台提供了ConnectivityManager 类,用于网络连接状态的检测。
在使用ConnectivityManager 时,必须在AndroidManifest.xml中添加访问网络状态的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
MainActivity.java
package com.example.networksetting;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity {
// 网络连接管理对象
private ConnectivityManager connectivityManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取网络连接管理的对象
connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
}
@Override
protected void onStart() {
super.onStart();
// 检测网络设置
// 1.加入访问网络设置的权限
// 2.获取网路连接
// 3.获取可用网络的信息对象
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null) {
Toast.makeText(this, "网络可用", 1).show();
} else {
new AlertDialog.Builder(this).setTitle("设置网路").setMessage("去设置网络")
.setPositiveButton("设置", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
settingNetWork();
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消设置网络的操作", 1)
.show();
}
}).show();
}
}
public void settingNetWork() {
// 隐式意图
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory("android.intent.category.LAUNCHER");
intent.setFlags(0x10200000);
intent.setComponent(new ComponentName("com.android.settings",
"com.android.settings.Settings"));
startActivity(intent);
}
}
演示效果:
① 当有网络时,进入该应用会Toast网络可用。
② 当没有网络时,进入该应用会弹出我们写好的对话框
点击设置按钮将执行settingNetWork()方法跳转到设置页面,这里发送了一个隐式意图。
思考activity的可视化生命周期,为什么要将代码写在onStart( )方法里呢?
时间: 2024-10-11 00:04:37