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