android判斷網路
Ⅰ Android判斷網路是否連接,跳轉到設置頁面以及判斷連接的是什麼網路
/**
* 檢測網路是否連接
* @return
*/
private boolean checkNetworkState() {
boolean flag = false;
//得到網路連接信息
manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//去進行判斷網路是否連接
if (manager.getActiveNetworkInfo() != null) {
flag = manager.getActiveNetworkInfo().isAvailable();
}
if (!flag) {
setNetwork();
} else {
isNetworkAvailable();
}
return flag;
}
/**
* 網路未連接時,調用設置方法
*/
private void setNetwork(){
Toast.makeText(this, "wifi is closed!", Toast.LENGTH_SHORT).show();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("網路提示信息");
builder.setMessage("網路不可用,如果繼續,請先設置網路!");
builder.setPositiveButton("設置", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
/**
* 判斷手機系統的版本!如果API大於10 就是3.0+
* 因為3.0以上的版本的設置和3.0以下的設置不一樣,調用的方法不同
*/
if (android.os.Build.VERSION.SDK_INT > 10) {
intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);
} else {
intent = new Intent();
ComponentName component = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(component);
intent.setAction("android.intent.action.VIEW");
}
startActivity(intent);
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create();
builder.show();
}
/**
* 網路已經連接,然後去判斷是wifi連接還是GPRS連接
* 設置一些自己的邏輯調用
*/
private void isNetworkAvailable(){
State gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(gprs == State.CONNECTED || gprs == State.CONNECTING){
Toast.makeText(this, "wifi is open! gprs", Toast.LENGTH_SHORT).show();
}
//判斷為wifi狀態下才載入廣告,如果是GPRS手機網路則不載入!
if(wifi == State.CONNECTED || wifi == State.CONNECTING){
Toast.makeText(this, "wifi is open! wifi", Toast.LENGTH_SHORT).show();
loadAdmob();
}
}
Ⅱ android 如何判斷網路是否能夠上網
實現步驟:
下面解決辦法來自於android學習手冊,android學習手冊包含9個章節,108個例子,源碼文檔隨便看,例子都是可交互,可運行,源碼採用android studio目錄結構,高亮顯示代碼,文檔都採用文檔結構圖顯示,可以快速定位。360手機助手中下載。排到第三個。
1、獲取ConnectivityManager對象
Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、獲取NetworkInfo對象
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
3、判斷當前網路狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
4、在AndroidManifest.xml中添加訪問當前網路狀態許可權
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
代碼如下:
public class ClassTestDemoActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (isNetworkAvailable(ClassTestDemoActivity.this))
{
Toast.makeText(getApplicationContext(), "當前有可用網路!", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "當前沒有可用網路!", Toast.LENGTH_LONG).show();
}
}
/**
* 檢查當前網路是否可用
*
* @param context
* @return
*/
public boolean isNetworkAvailable(Activity activity)
{
Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null)
{
return false;
}
else
{
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
if (networkInfo != null && networkInfo.length > 0)
{
for (int i = 0; i < networkInfo.length; i++)
{
System.out.println(i + "===狀態===" + networkInfo[i].getState());
System.out.println(i + "===類型===" + networkInfo[i].getTypeName());
// 判斷當前網路狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
}
}
return false;
}
}
Ⅲ Android系列之如何判斷網路鏈接狀態
下面咱們討論下Android手機判斷網路鏈接狀態的技術實現吧
目前Android操作系統的手機大部分支持WIFI,
GSM,3G網路通信
,但是每次鏈接到網路時只能選擇一種鏈接方式,
比如運營商定製的,還必須要求特定的網路環境(CMWAP,CTWAP等)如果要切換網路還需要先關閉現有的網路,
然後再啟動新的網路,這個轉換過程還需要一定的時間,
可能程序這時還需要知道心的網路是否鏈接成功後自動登錄到新的網路伺服器中,
也許用一個線程去監聽網路狀態是否鏈接成功;
我們可以用另外一種方法,PhoneStateListener
沒錯,你沒看錯,就是用PhoneStateListener。
很多應用PhoneStateListener都是監聽來電去電,PhoneStateListener還可以監聽網路斷開、
正在連接和連接成功。
=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
2mTelephonyMgr.listen(newPhoneStateListener(){
3
4@Override
(intstate){
6switch(state){
7caseTelephonyManager.DATA_DISCONNECTED://網路斷開
8break;
9caseTelephonyManager.DATA_CONNECTING://網路正在連接
10break;
11caseTelephonyManager.DATA_CONNECTED://網路連接上
12break;
13}14}1516}PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
我們只要重載onDataConnectionStateChanged方法,根據state判斷做相應的處理。
Ⅳ android 判斷是否有網路
用戶手機當前網路可用:WIFI、2G/3G網路,用戶打開與不打開網路,和是否可以用是兩碼事。可以使用指的是:用戶打開網路了並且可以連上互聯網進行上網。
檢測當前網路是否可用,代碼如下:
/**
* 檢測當的網路(WLAN、3G/2G)狀態
* @param context Context
* @return true 表示網路可用
*/
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null && info.isConnected())
{
// 當前網路是連接的
if (info.getState() == NetworkInfo.State.CONNECTED)
{
// 當前所連接的網路可用
return true;
}
}
}
return false;
}
/**
* 檢測當的網路(WLAN、3G/2G)狀態
* @param context Context
* @return true 表示網路可用
*/
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null && info.isConnected())
{
// 當前網路是連接的
if (info.getState() == NetworkInfo.State.CONNECTED)
{
// 當前所連接的網路可用
return true;
}
}
}
return false;
}
在AndroidManifest.xml文件添加的許可權:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
Ⅳ Android中如何簡單檢測網路是否連接
許可權:
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
代碼:
java">/*
*判斷網路連接是否已開
*true已打開false未打開
**/
publicstaticbooleanisConn(Contextcontext){
booleanbisConnFlag=false;
ConnectivityManagerconManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfonetwork=conManager.getActiveNetworkInfo();
if(network!=null){
bisConnFlag=conManager.getActiveNetworkInfo().isAvailable();
}
returnbisConnFlag;
}
/*沒有網路跳轉到網路設置頁面
*打開設置網路界面
**/
(finalContextcontext){
//提示對話框
AlertDialog.Builderbuilder=newAlertDialog.Builder(context);
builder.setTitle("網路設置提示").setMessage("網路連接不可用,是否進行設置?").setPositiveButton("設置",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
Intentintent=null;
//判斷手機系統的版本即API大於10就是3.0或以上版本
if(Build.VERSION.SDK_INT>10){
intent=newIntent(Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent=newIntent();
ComponentNamecomponent=newComponentName("com.android.settings","com.android.settings.WirelessSettings");
intent.setComponent(component);
intent.setAction("android.intent.action.VIEW");
}
context.startActivity(intent);
}
}).setNegativeButton("取消",newDialogInterface.OnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
dialog.dismiss();
}
}).show();
}
Ⅵ android 怎麼判斷網路狀態
獲取android系統的連接服務可判斷網路連接狀態,代碼如下
public class NetUtils{
public static boolean isNetworkConnected(Context context){
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] infos = cm.getAllNetworkInfo();
for(NetworkInfo info:infos){
if(info.isAvailable()&&info.isConnected()){
return true;
}
}
return false;
}
}
NetworkInfo的isAvailable()和isConnected()有以下5種狀態:
在WLAN設置界面
1,顯示連接已保存,但標題欄沒有,即沒有實質連接上:isConnected()==false,isAvailable()=true
2,顯示連接已保存,標題欄也有已連接上的圖標:isConnected()==true,isAvailable()=true
3,選擇不保存後:isConnected()==false,isAvailable()=true
4,選擇連接,在正在獲取IP地址時:isConnected()==false,isAvailable()=false
5,連接上後:isConnected()==true,isAvailable()=true
Ⅶ Android之判斷手機連接的網路類型是WIFI還是2G/3G/4G
wifi上網
不需要用到手機號碼的流量啊,有
wifi網路
資源肯定是用wifi好,但是沒有資源的情況只能用2G/3G的了,建議要用wifi的時候把手機網路關閉,避免wifi網路不穩定扣取了手機的流量。
Ⅷ android 判斷是否有網路連接
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivity.getActiveNetworkInfo();
if(info != null && info.isAvailable()){
if (netInfo.getType() == ConnectivityManager.TYPE_WIFI) {
//WiFi網路
} else if (netInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
//移動網路
} else {
//網路錯誤
}
}else{
//網路錯誤
}