[Android Traffic] Android网络开启、关闭整理

简介:

转载: http://blog.csdn.net/tu_bingbing/article/details/8469871

近段时间由于要对手机网络状况进行判断、开启和关闭,从网上找了些资料,现整理如下

 

包含了对WiFi、GPRS、飞行模式的开启、关闭以及一些状态的检测,在小米和三星平板上测试均通过

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

复制代码
package com.my.device_admin.business;

import java.lang.reflect.Method;

import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.provider.Settings;

public class NetworkManager {

    private Context context;
    private ConnectivityManager connManager;

    public NetworkManager(Context context) {
        this.context = context;
        connManager = (ConnectivityManager) this.context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
    }

    /**
     * @return 网络是否连接可用
     */
    public boolean isNetworkConnected() {

        NetworkInfo networkinfo = connManager.getActiveNetworkInfo();

        if (networkinfo != null) {
            return networkinfo.isConnected();
        }

        return false;
    }

    /**
     * @return wifi是否连接可用
     */
    public boolean isWifiConnected() {

        NetworkInfo mWifi = connManager
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        if (mWifi != null) {
            return mWifi.isConnected();
        }

        return false;
    }

    /**
     * 当wifi不能访问网络时,mobile才会起作用
     * @return GPRS是否连接可用
     */
    public boolean isMobileConnected() {

        NetworkInfo mMobile = connManager
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (mMobile != null) {
            return mMobile.isConnected();
        }
        return false;
    }

    /**
     * GPRS网络开关 反射ConnectivityManager中hide的方法setMobileDataEnabled 可以开启和关闭GPRS网络
     * 
     * @param isEnable
     * @throws Exception
     */
    public void toggleGprs(boolean isEnable) throws Exception {
        Class<?> cmClass = connManager.getClass();
        Class<?>[] argClasses = new Class[1];
        argClasses[0] = boolean.class;

        // 反射ConnectivityManager中hide的方法setMobileDataEnabled,可以开启和关闭GPRS网络
        Method method = cmClass.getMethod("setMobileDataEnabled", argClasses);
        method.invoke(connManager, isEnable);
    }

    /**
     * WIFI网络开关
     * 
     * @param enabled
     * @return 设置是否success
     */
    public boolean toggleWiFi(boolean enabled) {
        WifiManager wm = (WifiManager) context
                .getSystemService(Context.WIFI_SERVICE);
        return wm.setWifiEnabled(enabled);

    }
    
    /**
     * 
     * @return 是否处于飞行模式
     */
    public boolean isAirplaneModeOn() {  
        // 返回值是1时表示处于飞行模式  
        int modeIdx = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);  
        boolean isEnabled = (modeIdx == 1);
        return isEnabled;
    }  
    /**
     * 飞行模式开关
     * @param setAirPlane
     */
    public void toggleAirplaneMode(boolean setAirPlane) {  
        Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, setAirPlane ? 1 : 0);  
        // 广播飞行模式信号的改变,让相应的程序可以处理。  
        // 不发送广播时,在非飞行模式下,Android 2.2.1上测试关闭了Wifi,不关闭正常的通话网络(如GMS/GPRS等)。  
        // 不发送广播时,在飞行模式下,Android 2.2.1上测试无法关闭飞行模式。  
        Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);  
        // intent.putExtra("Sponsor", "Sodino");  
        // 2.3及以后,需设置此状态,否则会一直处于与运营商断连的情况  
        intent.putExtra("state", setAirPlane);  
        context.sendBroadcast(intent);  
    }
}
复制代码

 

分类: Android Traffic

本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/4312939.html如需转载请自行联系原作者


demoblog

相关文章
|
1月前
|
数据库 Android开发 开发者
构建高效Android应用:采用Kotlin协程优化网络请求处理
【2月更文挑战第30天】 在移动应用开发领域,网络请求的处理是影响用户体验的关键环节。针对Android平台,利用Kotlin协程能够极大提升异步任务处理的效率和简洁性。本文将探讨如何通过Kotlin协程优化Android应用中的网络请求处理流程,包括协程的基本概念、网络请求的异步执行以及错误处理等方面,旨在帮助开发者构建更加流畅和响应迅速的Android应用。
|
3月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
38 0
|
3月前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
22 0
|
8天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
9 0
|
8天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
8 0
|
3月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
24 0
|
4月前
|
XML JSON Android开发
[Android]网络框架之Retrofit(kotlin)
[Android]网络框架之Retrofit(kotlin)
55 0
|
4月前
|
缓存 JSON Android开发
[Android]网络框架之OkHttp(详细)(kotlin)
[Android]网络框架之OkHttp(详细)(kotlin)
151 0
|
1月前
|
机器学习/深度学习 数据采集 人工智能
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
41 0
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真