Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查我的应用程序是否使用WIFI或3G服务_Java_Android - Fatal编程技术网

Java 如何检查我的应用程序是否使用WIFI或3G服务

Java 如何检查我的应用程序是否使用WIFI或3G服务,java,android,Java,Android,我正在开发一个消息传递应用程序,是否有任何方式或API来识别android中的服务提供商名称,还有谁能帮助我以编程方式检查应用程序是否使用WIFI连接或3G服务?请帮助我。通过这段代码,您可以检查设备中的所有类型网络: public boolean isNetworkAvailable() { ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY

我正在开发一个消息传递应用程序,是否有任何方式或API来识别android中的服务提供商名称,还有谁能帮助我以编程方式检查应用程序是否使用WIFI连接或3G服务?请帮助我。

通过这段代码,您可以检查设备中的所有类型网络:

public boolean isNetworkAvailable() {
        ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            return false;
        } else {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++) {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
LocationManager服务=(LocationManager)getSystemService(getActivity().LOCATION_服务)

布尔值GPS\U PROVIDER=service.isProviderEnabled(LocationManager.GPS\U PROVIDER);
布尔网络\u提供程序=服务.isProviderEnabled(LocationManager.NETWORK\u提供程序)

这是一个非常好的类,用于获取当前连接类型并通过连接更新的侦听器发出警报:

package com.android.aft.AFCoreTools;

import java.util.ArrayList;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;


public class AFNetworkMonitoring {

    public enum NetworkMode {
        NotConnected,
        ConnectedToWifi,
        ConnectedTo3G,
    };

    public interface NetworkMonitoringInterface {
        public void onNetworkUpdate(NetworkMode mode);
    }

    // Network connection
    public NetworkMode mode = NetworkMode.NotConnected;

    // Connection listener
    private BroadcastReceiver mConnReceiver;

    // Listeners
    private ArrayList<NetworkMonitoringInterface> mListeners;

    // Context
    private Context mContext;

    public AFNetworkMonitoring(Context ctx) {
        this(ctx, null);
    }

    public AFNetworkMonitoring(Context ctx, NetworkMonitoringInterface listener) {
        mContext = ctx;
        addListener(listener);

        // Create network state update
        mConnReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                updateNetworkConnectionStatus();
            }
        };
        mContext.registerReceiver(mConnReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }

    protected void updateNetworkConnectionStatus() {
        ConnectivityManager conMgr = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = conMgr.getActiveNetworkInfo();
        if (info == null || !info.isConnected() || !info.isAvailable()) {
            DebugTools.d("Lost connection detected");
            mode = NetworkMode.NotConnected;
            notifyListener();
            return;
        }

        NetworkInfo infoWifi = conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (infoWifi.isConnected() || infoWifi.isAvailable()) {
            DebugTools.d("On connection wifi detected");
            mode = NetworkMode.ConnectedToWifi;
            notifyListener();
            return;
        }

        DebugTools.d("On connection 3G detected");
        mode = NetworkMode.ConnectedTo3G;
        notifyListener();
    }

    protected void notifyListener() {
        if (mListeners == null)
            return ;

        new AsyncTaskWrapper<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                // Nothing to do
                return null;
            }
            @Override
            protected void onPostExecute(Void result) {
                for (NetworkMonitoringInterface l: mListeners)
                    l.onNetworkUpdate(mode);
            };
        }.executeParallel();
    }

    public void addListener(NetworkMonitoringInterface listener) {
        if (listener == null)
            return ;

        if (mListeners == null)
            mListeners = new ArrayList<AFNetworkMonitoring.NetworkMonitoringInterface>();

        mListeners.add(listener);
    }

    public void removeListener(NetworkMonitoringInterface listener) {
        if (mListeners == null)
            return ;
        mListeners.remove(listener);
    }

}
package com.android.aft.AFCoreTools;
导入java.util.ArrayList;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
公共类网络监控{
公共枚举网络模式{
没有连接,
连接到Towifi,
连接到3G,
};
公共接口网络监控接口{
公共网络更新(网络模式);
}
//网络连接
公共网络模式=NetworkMode.NotConnected;
//连接侦听器
专用广播接收机mConnReceiver;
//听众
私人律师事务所;
//上下文
私有上下文;
公共AFNetworkMonitoring(上下文ctx){
这个(ctx,null);
}
公共AFNetworkMonitoring(上下文ctx、网络监视器接口侦听器){
mContext=ctx;
addListener(listener);
//创建网络状态更新
mConnReceiver=新广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
updateNetworkConnectionStatus();
}
};
registerReceiver(mConnReceiver,新的IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
受保护的无效updateNetworkConnectionStatus(){
ConnectivityManager conMgr=(ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_服务);
NetworkInfo=conMgr.getActiveNetworkInfo();
如果(info==null | | |!info.isConnected()| |!info.isAvailable()){
DebugTools.d(“检测到断开连接”);
mode=NetworkMode.NotConnected;
notifyListener();
返回;
}
NetworkInfo infoWifi=conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(infoWifi.isConnected()| | infoWifi.isAvailable()){
DebugTools.d(“检测到连接上的wifi”);
mode=NetworkMode.ConnectedToWifi;
notifyListener();
返回;
}
DebugTools.d(“检测到3G连接”);
模式=网络模式。连接到3G;
notifyListener();
}
受保护的void notifyListener(){
if(mListeners==null)
返回;
新的AsyncTaskWrapper(){
@凌驾
受保护的Void doInBackground(Void…参数){
//无事可做
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
用于(网络监控接口l:mListeners)
l、 onNetworkUpdate(模式);
};
}.executeParallel();
}
public void addListener(网络监视接口侦听器){
if(侦听器==null)
返回;
if(mListeners==null)
mListeners=newarraylist();
添加(侦听器);
}
public void removeListener(网络监视界面侦听器){
if(mListeners==null)
返回;
删除(侦听器);
}
}
package com.android.aft.AFCoreTools;

import java.util.ArrayList;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;


public class AFNetworkMonitoring {

    public enum NetworkMode {
        NotConnected,
        ConnectedToWifi,
        ConnectedTo3G,
    };

    public interface NetworkMonitoringInterface {
        public void onNetworkUpdate(NetworkMode mode);
    }

    // Network connection
    public NetworkMode mode = NetworkMode.NotConnected;

    // Connection listener
    private BroadcastReceiver mConnReceiver;

    // Listeners
    private ArrayList<NetworkMonitoringInterface> mListeners;

    // Context
    private Context mContext;

    public AFNetworkMonitoring(Context ctx) {
        this(ctx, null);
    }

    public AFNetworkMonitoring(Context ctx, NetworkMonitoringInterface listener) {
        mContext = ctx;
        addListener(listener);

        // Create network state update
        mConnReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                updateNetworkConnectionStatus();
            }
        };
        mContext.registerReceiver(mConnReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }

    protected void updateNetworkConnectionStatus() {
        ConnectivityManager conMgr = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = conMgr.getActiveNetworkInfo();
        if (info == null || !info.isConnected() || !info.isAvailable()) {
            DebugTools.d("Lost connection detected");
            mode = NetworkMode.NotConnected;
            notifyListener();
            return;
        }

        NetworkInfo infoWifi = conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (infoWifi.isConnected() || infoWifi.isAvailable()) {
            DebugTools.d("On connection wifi detected");
            mode = NetworkMode.ConnectedToWifi;
            notifyListener();
            return;
        }

        DebugTools.d("On connection 3G detected");
        mode = NetworkMode.ConnectedTo3G;
        notifyListener();
    }

    protected void notifyListener() {
        if (mListeners == null)
            return ;

        new AsyncTaskWrapper<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                // Nothing to do
                return null;
            }
            @Override
            protected void onPostExecute(Void result) {
                for (NetworkMonitoringInterface l: mListeners)
                    l.onNetworkUpdate(mode);
            };
        }.executeParallel();
    }

    public void addListener(NetworkMonitoringInterface listener) {
        if (listener == null)
            return ;

        if (mListeners == null)
            mListeners = new ArrayList<AFNetworkMonitoring.NetworkMonitoringInterface>();

        mListeners.add(listener);
    }

    public void removeListener(NetworkMonitoringInterface listener) {
        if (mListeners == null)
            return ;
        mListeners.remove(listener);
    }

}