android——判斷網絡狀態

日常咱們玩qq的時候咱們沒聯網 ,qq上面回顯示「網絡鏈接不給力,請檢查網絡鏈接」那麼它是 經過什麼方式判斷網絡是否鏈接的呢?
下面將寫個案例展現如何檢查網絡鏈接狀態的
因爲咱們這裏只是測試下因此咱們的項目只是簡單的實現點擊一個按鈕判斷設備網絡是否鏈接若是 網絡已鏈接則彈出一個消息框提示「網絡通暢」反之則提示「您的網絡真的鏈接 了嗎」


1.新建一個android項目textNet(設備版本爲4.4.2)
2.打開activity_main.xml 添加一個按鈕
3.打開MainActivity.java 用匿名內部類爲按鈕添加一個點擊事件
注:不建議使用匿名內部類 若是事件過多會很亂,作好到同一包下建一個類去實現方便修改

項目代碼以下:html

package com.example.internet;

import android.app.Activity;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.os.Bundle;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends Activity {
    private ConnectivityManager con;
    private boolean wifi;
    private boolean internet;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //得到句柄
        Button btn1 = (Button) this.findViewById(R.id.button1);
        
        //匿名內部類實現點擊事件
        btn1.setOnClickListener(new OnClickListener(){
            
            public void onClick(View v) { //建議不使用匿名內部類,
                //這裏加try catch是爲了防止設備沒給權限二中止運行影響用戶體驗,
                try {
                    //監視網絡鏈接狀態
                    con=(ConnectivityManager)getSystemService(Activity.CONNECTIVITY_SERVICE);      
                    //getNetworkinfo  獲取指定網絡鏈接類型的信息
                    wifi=con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();  
                    internet=con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
                    
                } catch (Exception e) {
                    e.printStackTrace();
                }
                
                PackageManager pm = getPackageManager(); 
                //判斷是否有權限
                boolean permission = (PackageManager.PERMISSION_GRANTED ==   
                        pm.checkPermission("android.permission.ACCESS_NETWORK_STATE", "com.example.internet"));  
                   
                if (permission) {  
                    
                    if(wifi | internet){  
                        //土司    彈框顯示
                        Toast.makeText(MainActivity.this,  
                                "網絡通暢", Toast.LENGTH_LONG)  
                                .show(); 
                    }else{  
                        Toast.makeText(MainActivity.this,   
                                "親,網絡連了麼?", Toast.LENGTH_LONG)  
                                .show();  
                    } 
                    
                }else {  
                    //若是沒權限則提示
                    Toast.makeText(MainActivity.this,   
                            "請打開相關網絡狀態權限,方便使用", Toast.LENGTH_LONG)  
                            .show();  
                }  
            }
            
        });
    }
 
 

 

 

 

注:權限清單方法java

  

try {  
            PackageInfo pack = pm.getPackageInfo("packageName",PackageManager.GET_PERMISSIONS);</span>  
            String[] permissionStrings = pack.requestedPermissions;  
            showToast("權限清單--->" + permissionStrings.toString());  
        } catch (NameNotFoundException e) {  
            e.printStackTrace();  
        }  

 

這裏轉載一份權限表:android

  1. http://www.cnblogs.com/classic/archive/2011/06/20/2085055.html
相關文章
相關標籤/搜索