Android判断网络是否连接,跳转到设置页面以及判断连接的是什么网络

如果拟开发一个网络应用的程序,首先考虑是否接入网络,在Android手机中判断是否联网可以通过ConnectivityManager 类的isAvailable()方法判断,首先获取网络通讯类的实例 ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  ,使用cwjManager.getActiveNetworkInfo().isAvailable();
来返回是否有效,如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,具体的可以通过ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式,需要注意的是有关调用需要加入<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  这个权限,android开发网提醒大家在真机上Market和Browser程序都使用了这个方法,来判断是否继续,同时在一些网络超时的时候也可以检查下网络连接是否存在,以免浪费手机上的电力资源

判断网络是否连接资源地址:http://download.csdn.net/detail/u014649598/7966901

一、判断网络连接是否可用,不可用跳转到设置界面

@Override
    protected void onStart() {
    	AlertDialog.Builder builder=new Builder(this);

				//检查用户的网络情况
		        ConnectivityManager cm=(ConnectivityManager) MainActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);
		        //返回當前可用網絡信息

		        NetworkInfo info=cm.getActiveNetworkInfo();
		        if(info!=null&&info.isConnected()){
		        	Toast.makeText(MainActivity.this, "网络可用", 0).show();

		        }else{
		        	Toast.makeText(MainActivity.this, "网络不可用", 0).show();
		        	builder.setTitle("提醒");
		        	builder.setMessage("当前网络不可用,点击确定设置网络");
		        	builder.setPositiveButton("确定", new OnClickListener() {

		    			@Override
		    			public void onClick(DialogInterface dialog, int which) {
		        	Intent intent=new Intent();
		        	intent.setClassName("com.android.settings", "com.android.settings.Settings");
		        	startActivity(intent);
		        }
			}
		);
		        	builder.create().show();
		        }

    	super.onStart();
    }

二、使用ConnectionChangeReceiver判断网络是否可用

public class MainActivity extends Activity {
	private ConnectionChangeReceiver myReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //用广播判断
        myReceiver=new ConnectionChangeReceiver();
		this.registerReceiver(myReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }
public class ConnectionChangeReceiver extends BroadcastReceiver
    {
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		ConnectivityManager connectivityManager = (ConnectivityManager)
    				context.getSystemService(Context.CONNECTIVITY_SERVICE);
    		NetworkInfo mobworkInfo = connectivityManager
    				.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    		NetworkInfo wifiworkInfo = connectivityManager
    				.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    		boolean IsNetConnected = mobworkInfo.isConnected();
    		boolean IsWifiConnected = wifiworkInfo.isConnected();
    		if(IsNetConnected || IsWifiConnected){
    			System.out.println("网络打开");
    			Log.e("wankai", "wankai");
    			boolean isConnected = true;
    		}else{
    			boolean isConnected = false;
    			System.out.println("网络关闭");
    			Log.e("wankai2", "wangguan");
    		}
    	}
    }

}
  

三、判断GPS是否打开

 public static boolean isGpsEnabled(Context context) {
        LocationManager lm = ((LocationManager) context
                .getSystemService(Context.LOCATION_SERVICE));
        List<String> accessibleProviders = lm.getProviders(true);
        return accessibleProviders != null && accessibleProviders.size() > 0;
    } 

四、判断WIFI是否打开

public static boolean isWifiEnabled(Context context) {
        ConnectivityManager mgrConn = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        TelephonyManager mgrTel = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        return ((mgrConn.getActiveNetworkInfo() != null && mgrConn
                .getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel
                .getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
    } 

五、判断是否是3G网络

public static boolean is3rd(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkINfo = cm.getActiveNetworkInfo();
        if (networkINfo != null
                && networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) {
            return true;
        }
        return false;
    }  

六、判断是wifi还是3g网络,用户的体现性在这里了,wifi就可以建议下载或者在线播放。

public static boolean isWifi(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkINfo = cm.getActiveNetworkInfo();
            if (networkINfo != null
                    && networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {
                return true;
            }
            return false;
        }
时间: 2024-10-28 10:03:51

Android判断网络是否连接,跳转到设置页面以及判断连接的是什么网络的相关文章

Android菜鸟笔记-WifiPickerActivity 实现跳转到系统自带wifi连接界面

前言: 在使用一些APP时,比如Google Play,在没有连接到网络时,APP会自动跳转到系统自带的wifi连接界面(如下图),在这个界面下连接wifi有一个很好的功能:在没有连上wifi热点时,"下一步"按钮是无法点击,这种体验效果是非常好的,确保了在下一步时,有网络可以使用. 实现步骤: 1. 怎么才能跳转到这个界面?(通过adb logcat查看Google Play跳转时的ACTION,log如下) I/ActivityManager(  444): START u0 {a

跳转iPhone设置页面,绕过审核

1.问题描述 跳转iPhone设置页面之前都是通过 App-Prefs:root=WIFI 来跳转,但是2018年6月废弃了这个函数,被认为是私有函数,审核会被拒绝. 有心人采用了字符串转码的方式来规避. 2.代码 unsigned char byte[] = {0x41,0x70,0x70,0x2d,0x50,0x72,0x65,0x66,0x73,0x3a,0x72,0x6f,0x6f,0x74,0x3d,0x57,0x49,0x46,0x49}; NSData *encryptString

iOS 从应用跳转到设置页面

应用跳设置页面有2个方法 //第一种,仅支持ios8以上版本 [[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; //第二种--需要再info中设置URL Type [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]]; 第

android判断当前网络状态及跳转到设置界面

今天,想做这个跳转到网络设置界面, 刚开始用 intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS); 不料老是出现settings.WirelessSettings找不到(就是没法提示出来,显示红色底纹),我后来查了下资料,结果发现跟版本有关,我的是安卓4.3的,所以需要用                         intent = new Intent(android.provider.Settings.ACTION_WIRELES

iOS8以后,跳转到设置页面

// iOS8 之前不可用 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

获取网络状态及跳转到网络设置界面

Android平台提供了ConnectivityManager 类,用于网络连接状态的检测. 在使用ConnectivityManager 时,必须在AndroidManifest.xml中添加访问网络状态的权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> MainActivity.java package com.example.networksetting; imp

Swift - 判断是否有某功能访问权限,没有则提示,并自动跳转到设置页

由于 iOS 系统的安全限制,App 如果需要访问设备的通讯录.麦克风. 相册. 相机.地理位置等时,需要请求用户是否允许访问. 有时用户不小心点了"不允许",后面可能就不知道要去哪里再开启这个权限了.这就要求我们应用在每次调用相关功能的时候先获取相关的授权状态,如果还没授权则弹出授权申请的提示框.如果之前被拒绝了,则弹出相关提示框让用户很方便地自动跳转到设置页面去修改权限. 1,样例效果图 (1)这里以照片的访问权限为例.为方便演示,我在页面初始化完毕后就请求权限. (2)第一次请求

如何设置AnyChat的P2P连接策略

自AnyChat Platform Core SDK V2.8.6版本开始,AnyChat SDK向上层应用开放了内核的P2P连接策略,可以让应用程序来干预内核的P2P连接,以满足各种场合下的应用需求. 设置P2P连接策略的典型代码如下: 1.DWORD dwP2PPolitic = 3; 2.BRAC_SetSDKOption(BRAC_SO_NETWORK_P2PPOLITIC,(const char*)&dwP2PPolitic,sizeof(DWORD)); 目前开放的P2P连接策略包含

关于OS 跳转相应设置项

1 app位置访问 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 2 系统隐私设置 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]]; 3 打开浏览器 [[UIApplication s