當前位置:首頁 » 安卓系統 » android獲取網路狀態

android獲取網路狀態

發布時間: 2022-07-15 15:39:30

Ⅰ Android如何獲取網路連接狀態及怎樣調用網路配置界面

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class NetManager {
Context context;

public NetManager(Context context) {
this.context = context;
}

// 判斷網路是否可用的方法
public boolean isOpenNetwork() {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
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;
}

// 判斷WIFI網路是否可用的方法
public boolean isOpenWifi() {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return mWifi.isConnected();
}
}

public static void netManager(final Context a) {
netManager = new NetManager(a);

if (!netManager.isOpenNetwork()) {
// 如果網路不可用,則彈出對話框,對網路進行設置
Builder builder = new Builder(a);
builder.setTitle("沒有可用的網路");
builder.setMessage("是否對網路進行設置?");
builder.setPositiveButton("確定",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
try {

String sdkVersion = android.os.Build.VERSION.SDK;
if (Integer.valueOf(sdkVersion) > 10) {
intent = new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS);
} else {
intent = new Intent();
ComponentName comp = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(comp);
intent.setAction("android.intent.action.VIEW");
}
a.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
builder.setNegativeButton("取消",
null);
builder.show();
}else {
Toast.makeText(a, "網路不給力,請確認您的網路連接", Toast.LENGTH_LONG).show();
}
}
轉載,僅供參考。

Ⅱ Android 怎麼獲取手機網路信號問題

在我們有的時候需要可能需要自己寫一個狀態欄顯示手機的的當前網路類似網路信號的問題這些需求先說說思路吧。
1.這個裡面涉及一個核心的api :PhoneStateListener
讓某個類繼承PhoneStateListener 重寫:onSignalStrengthsChanged 通過傳入的SignalStrength getLevel()獲取信號強度 判斷網路是4G還是3G或者是2G 通過TelephoneManager getNetWorkType獲取
關於顯示移動信號顯示就這幾個方法,現在需要冬天更改因為手機變化的怎麼做呢那麼介紹另外一個API:SubscriptionManager

關於SubscriptionManager :
1.對象實例化: SubscriptionManager mSubscriptionManager = SubscriptionManager.from(Conrtext )返回一個實例對象
SubscriptionInfo sub0 = mSubscriptionManager.(0);

if(null != sub0) {
mPhoneStateListener = new Sim1SignalStrengthsListener(sub0.getSubscriptionId());
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}

Ⅲ 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 還是 3g/4g

// 獲取代表聯網狀態的NetWorkInfo對象 NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
// 獲取當前的網路連接是否可用 if (null == networkInfo){Toast.makeText(this, "當前的網路連接不可用", Toast.LENGTH_SHORT).show();
//當網路不可用時,跳轉到網路設置頁面 startActivityForResult(new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS), 1);} else {boolean available = networkInfo.isAvailable();
if (available){Log.i("通知", "當前的網路連接可用");
Toast.makeText(this, "當前的網路連接可用", Toast.LENGTH_SHORT).show();} else {Log.i("通知", "當前的網路連接不可用");
Toast.makeText(this, "當前的網路連接不可用", Toast.LENGTH_SHORT).show();}}State state = connManager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).getState();
if (State.CONNECTED == state){Log.i("通知", "GPRS網路已連接");
Toast.makeText(this, "GPRS網路已連接", Toast.LENGTH_SHORT).show();}state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.getState();
if (State.CONNECTED == state){Log.i("通知", "WIFI網路已連接");
Toast.makeText(this, "WIFI網路已連接", Toast.LENGTH_SHORT).show();}//// 跳轉到無線網路設置界面
// startActivity(new
// Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
//// 跳轉到無限wifi網路設置界面
// startActivity(new
// Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)); }也可以:
privatevoid testConnectivityManager(){ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//mobile 3G Network State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
Log.d(mobile.toString());
//wifi Network State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
Log.d(wifi.toString());
//如果3G網路和wifi網路都未連接,且不是處於正在連接狀態 則進入Network Setting界面 由用戶配置網路連接if(mobile==State.CONNECTED||mobile==State.CONNECTING)return;if(wifi==State.CONNECTED||wifi==State.CONNECTING)return;startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));//進入無線網路配置界面
//startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //進入手機中的wifi網路設置界面 }

Ⅳ android怎樣獲取網路速度

Android應用里經常使用到網路速度的顯示,特別是文件下載和視頻緩沖的時候。用到的是TrafficStats類,就是每隔一段時間去讀取網速:

java">privatevoidshowNetSpeed(){

longnowTotalRxBytes=getTotalRxBytes();
longnowTimeStamp=System.currentTimeMillis();
longspeed=((nowTotalRxBytes-lastTotalRxBytes)*1000/(nowTimeStamp-lastTimeStamp));//毫秒轉換

lastTimeStamp=nowTimeStamp;
lastTotalRxBytes=nowTotalRxBytes;

Messagemsg=mHandler.obtainMessage();
msg.what=100;
msg.obj=String.valueOf(speed)+"kb/s";

mHandler.sendMessage(msg);//更新界面
}

Ⅵ android判斷移動網路是否打開

Android 判斷網路狀態這一應用技巧在實際應中是比較重要的。那麼,在Android操作系統中,如何能夠正確的判斷我們所連接的網路是否斷開:
public class ConnectionChangeReceiver extends
BroadcastReceiver
{
@Override
public void onReceive( Context context, Intent intent )
{
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService
( Context.CONNECTIVITY_SERVICE );
NetworkInfo activeNetInfo = connectivityManager.
getActiveNetworkInfo();
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo
( ConnectivityManager.TYPE_MOBILE );
if ( activeNetInfo != null )
{
Toast.makeText( context, "Active Network Type : " +
activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
}
if( mobNetInfo != null )
{
Toast.makeText( context, "Mobile Network Type : " +
mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
}
}
}
< !-- Needed to check when the network connection changes -->
< uses-permission android:name="android.permission.
ACCESS_NETWORK_STATE"/>
< receiver android:name="com.blackboard.androidtest.
receiver.ConnectionChangeReceiver"
android:label="NetworkConnection">
< intent-filter>
< action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
< /intent-filter>
< /receiver>

Ⅶ 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 怎麼監控網路狀態可以訪問互聯網而不是連接狀態

在開發android應用時,涉及到要進行網路訪問,時常需要進行網路狀態的檢查,以提供給用戶必要的提醒。一般可以通過ConnectivityManager來完成該工作。
ConnectivityManager有四個主要任務:
1、監聽手機網路狀態(包括GPRS,WIFI, UMTS等)
2、手機狀態發生改變時,發送廣播
3、當一個網路連接失敗時進行故障切換
4、為應用程序提供可以獲取可用網路的高精度和粗糙的狀態
當我們要在程序中監聽網路狀態時,只要一下幾個步驟即可:
1、定義一個Receiver重載其中的onReceive函數,在其中完成所需要的功能,如根據WIFI和GPRS是否斷開來改變空間的外觀
復制代碼 代碼如下:

connectionReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
Log.i(TAG, "unconnect");
// unconnect network
}else {
// connect network
}
}
};

2、在適當的地方注冊Receiver,可以在程序中注冊,在onCreate中調用如下函數即可:
復制代碼 代碼如下:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(connectionReceiver, intentFilter);

3、在適當時取消注冊Receiver,可以在程序中取消,在onDestroye中調用如下函數即可:
復制代碼 代碼如下:

if (connectionReceiver != null) {
unregisterReceiver(connectionReceiver);
}

熱點內容
pspfifa無緩存 發布:2025-01-24 16:45:13 瀏覽:164
androidhandler機制 發布:2025-01-24 16:41:10 瀏覽:935
安卓系統如何下載aov 發布:2025-01-24 16:29:53 瀏覽:572
iptables允許ip訪問 發布:2025-01-24 16:19:58 瀏覽:931
安卓80如何識別存儲卡許可權 發布:2025-01-24 16:19:54 瀏覽:231
存儲介質價格 發布:2025-01-24 16:19:18 瀏覽:150
刪除多個表sql 發布:2025-01-24 16:10:57 瀏覽:595
安卓設備版本哪裡看 發布:2025-01-24 16:06:00 瀏覽:549
編譯錯誤參數不可選 發布:2025-01-24 16:00:51 瀏覽:289
倉儲軟體用什麼伺服器 發布:2025-01-24 16:00:03 瀏覽:626