導航:首頁 > 操作系統 > androidwifimanager

androidwifimanager

發布時間:2022-08-21 18:59:14

❶ 在android上查看wifi狀態,代碼如下:

不知道你的程序報的是什麼錯,給你一個例子吧,不過方法和你的有點差別:
public class WifiAdmin {
/**WiFi Manager**/
private WifiManager wifimanager;
/**WiFi Information**/
private WifiInfo wifiinfo;
/**Activity NetWork List**/
private List<ScanResult> netlist;
/**Configured NetWork List**/
private List<WifiConfiguration> connectedlist;
/**WiFi Lock**/
private WifiLock wifilock;

public WifiAdmin(Context context) {
wifimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}

/**
* WiFi Operate
* */
/**Open WiFi**/
public void openWifi() {
if (!wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(true);
}
}
/**Close WiFi**/
public void closeWifi() {
if (wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(false);
}
}
/**WiFi State**/
public int checkState() {
return wifimanager.getWifiState();
}

/**
* WiFiLock Operate
* */
/**Create WiFiLock**/
public void creatWifiLock() {
wifilock = wifimanager.createWifiLock("Test");
}
/**Lock WiFi**/
public void acquireWifiLock() {
wifilock.acquire();
}
/**Clear WiFiLock**/
public void releaseWifiLock() {
if (wifilock.isHeld()) {
wifilock.release();
}
}
/**
* WiFiInfo Operate
* */
/**Get WiFiInfo**/
public WifiInfo getWifiInfo(){
wifiinfo = wifimanager.getConnectionInfo();
return wifiinfo;
}

/**
* NetWork Operate
* */
/**Scan**/
public void startScan() {
wifimanager.startScan();
netlist = wifimanager.getScanResults();
connectedlist = wifimanager.getConfiguredNetworks();
}
/**Get Configured NetWork**/
public List<WifiConfiguration> getConfiguration() {
return connectedlist;
}
/**Get Activity NetWork**/
public List<ScanResult> getWifiList() {
return netlist;
}
/**Connect a NetWork**/
public void connectConfiguration(int index) {
if (index < 0 || index > connectedlist.size()) {
return;
}
wifimanager.enableNetwork(connectedlist.get(index).networkId,true);
}
/**Add a NetWork**/
public void addNetwork(WifiConfiguration wcg) {
int wcgID = wifimanager.addNetwork(wcg);
wifimanager.enableNetwork(wcgID, true);
}
/**DisConnect a NetWork**/
public void disconnectWifi(int netId) {
wifimanager.disableNetwork(netId);
wifimanager.disconnect();
}
}

❷ android開發中如果我想代碼實現打開wifi熱點如何實現

1·申請許可權:
android.permission.ACCESS_WIFI_STATE
android.permission.CHANGE_WIFI_STATE
android.permission.WAKE_LOCK
2·獲取WifiManager
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
3·開啟、關閉wifi
if (wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
} else {
wifiManager.setWifiEnabled(true);
}
4·注意
如果遇到force-close, 選wait即可, 因為啟動wifi需要幾秒鍾, UI如果5妙鍾還沒反映的話, 系統會給你這個force close exception

PS:我以前做過設計讀取系統硬體信息的時候用過,但是很長時間沒用了,這段注釋是從網上來的,希望能幫到你。

❸ android wifimanager怎樣設置靜態ip

找到並點擊手機桌面上的」設置「,打開」設置「窗口。
在「設置」窗口中點擊」無線和網路「選項。打開」無線和網路管理「窗口。
點擊窗口裡」WLAN 設置(設置和管理無線接入點)「選項。即打開」WLAN設置「窗口。
在」WLAN設置「窗口,直接點擊手機下方的」選項「鍵,會彈出」掃描「和」高級「兩個選項。直接點擊」高級「選項,進入IP設置。
在IP設置下面,勾選」使用靜態IP「。
下面的IP地址、網關、網路掩碼、域名等就可編輯輸入,如設置IP時,點擊IP地址後面的倒三角,會彈出IP地址輸入窗口,輸入以後點擊」確定「即可。設置網關、網路掩碼、域名時同IP地址設置一樣。
上面網路掩碼相當於電腦上的子網掩碼,域名即為電腦上的DNS伺服器地址

❹ android開發怎麼判斷wifi信號強度

通過WifiManager的方法getScanResults()獲取List<ScanResult>的集合,ScanResult.level就是信號強度是個負數,然後使用
WifiManager.calculateSignalLevel(scanResult.level,
100);就可得到確定的信號強度(calculateSignalLevel為計算信號等級函數,MAX_RSSI和MIN_RSSI分別為最強和最弱信號強度等級的信號強度閥值)。

❺ android開發,怎麼自動鏈接熱點

參考如下內容,可以實現沒有密碼的wifi自動連接:

實現自動連接到指定的WiFi熱點,我們需要熟悉Android里的wifimanager類,下面是結合網路資料和本人實踐給出的方法,供參考:

1. 自定義一個wifiAdmin操作類:

[java] view plain
import java.util.List;

import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;

public class WifiAdmin {

// 定義WifiManager對象
private WifiManager mWifiManager;
// 定義WifiInfo對象
private WifiInfo mWifiInfo;
// 掃描出的網路連接列表
private List<ScanResult> mWifiList;
// 網路連接列表
private List<WifiConfiguration> mWifiConfiguration;
// 定義一個WifiLock
WifiLock mWifiLock;

// 構造器
public WifiAdmin(Context context) {
// 取得WifiManager對象
mWifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
// 取得WifiInfo對象
mWifiInfo = mWifiManager.getConnectionInfo();
}

// 打開WIFI
public void openWifi() {
if (!mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(true);
}
}

// 關閉WIFI
public void closeWifi() {
if (mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}

// 檢查當前WIFI狀態
public int checkState() {
return mWifiManager.getWifiState();
}

// 鎖定WifiLock
public void acquireWifiLock() {
mWifiLock.acquire();
}

// 解鎖WifiLock
public void releaseWifiLock() {
// 判斷時候鎖定
if (mWifiLock.isHeld()) {
mWifiLock.acquire();
}
}

// 創建一個WifiLock
public void creatWifiLock() {
mWifiLock = mWifiManager.createWifiLock("Test");
}

// 得到配置好的網路
public List<WifiConfiguration> getConfiguration() {
return mWifiConfiguration;
}

// 指定配置好的網路進行連接
public void connectConfiguration(int index) {
// 索引大於配置好的網路索引返回
if (index > mWifiConfiguration.size()) {
return;
}
// 連接配置好的指定ID的網路
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
true);
}

public void startScan() {
mWifiManager.startScan();
// 得到掃描結果
mWifiList = mWifiManager.getScanResults();
// 得到配置好的網路連接
mWifiConfiguration = mWifiManager.getConfiguredNetworks();
}

// 得到網路列表
public List<ScanResult> getWifiList() {
return mWifiList;
}

// 查看掃描結果
public StringBuilder lookUpScan() {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mWifiList.size(); i++) {
stringBuilder
.append("Index_" + new Integer(i + 1).toString() + ":");
// 將ScanResult信息轉換成一個字元串包
// 其中把包括:BSSID、SSID、capabilities、frequency、level
stringBuilder.append((mWifiList.get(i)).toString());
stringBuilder.append("/n");
}
return stringBuilder;
}

// 得到MAC地址
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}

// 得到接入點的BSSID
public String getBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}

// 得到IP地址
public int getIPAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}

// 得到連接的ID
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}

// 得到WifiInfo的所有信息包
public String getWifiInfo() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
}

// 添加一個網路並連接
public boolean addNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(wcg);
boolean b = mWifiManager.enableNetwork(wcgID, true);
System.out.println("a--" + wcgID);
System.out.println("b--" + b);
return b;
}

// 斷開指定ID的網路
public void disconnectWifi(int netId) {
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
}

//然後是一個實際應用方法,只驗證過沒有密碼的情況:

public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type)
{
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + SSID + "\"";

WifiConfiguration tempConfig = this.IsExsits(SSID);
if(tempConfig != null) {
mWifiManager.removeNetwork(tempConfig.networkId);
}

if(Type == 1) //WIFICIPHER_NOPASS
{
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}
if(Type == 2) //WIFICIPHER_WEP
{
config.hiddenSSID = true;
config.wepKeys[0]= "\""+Password+"\"";
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}
if(Type == 3) //WIFICIPHER_WPA
{
config.preSharedKey = "\""+Password+"\"";
config.hiddenSSID = true;
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
//config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.status = WifiConfiguration.Status.ENABLED;
}
return config;
}

private WifiConfiguration IsExsits(String SSID)
{
List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs)
{
if (existingConfig.SSID.equals("\""+SSID+"\""))
{
return existingConfig;
}
}
return null;
}

}
//分為三種情況:1沒有密碼2用wep加密3用wpa加密

2.調用時是這樣的:

[java] view plain
WifiAdmin wifiAdmin = new WifiAdmin(wifiTest.this); //wifiTest.this is a context for sample;
wifiAdmin.openWifi();
WifiConfiguration wcg=wifiAdmin.CreateWifiInfo(wifiName, wifiPass,3); //wifiName is the SSID; wifiPass is the password;
wifiAdmin.addNetwork(wcg);

3.稍等片刻,便會連接上wifi了

❻ android manager wifi 怎麼用

獲取Wifi的控制類WifiManager。
WifiManager wm=(WifiManager)getSystemService(Context.WIFI_SERVICE);
接下來可以對wifi操作了,比如要打開、關閉wifi,可以通過WifiManager的setWifiEnabled()方法來開關wifi。
若要查看一些信息,可以通過getConnectionInfo()方法得到WifiInfo類的對象,WifiInfo類里主要提供手機wifi上面存儲的連接信息。
WifiInfo類方法:
1、getBSSID() 獲取接入點的mac地址(String)
2、getIpAddress() 獲取本機的IP地址 (int)
3、getLinkSpeed() 獲取連接速度(不是下載速度),單位為Mbps (int)
4、getMacAddress() 獲取mac地址 (String)
5、getNetworkId() 獲取網路id號。每一個設定好了的網路都有一個獨一無二的整數型ID號,用來識別網路,當操作請求時(翻譯)。簡而言之,就是這個號就是代表一個連接點,手機可以通過wifi連接很多無線網的。
6、getRssi() 返回收到的信號強度,是個負數。(好像到-113就表示一點信號都沒有,也就是說數越大信號就越好)
7、getSSID() 獲取無線信號提供者的名稱 (就是要連的網路的名字)(String)
上面那個類只能查到本機的mac地址與ip,要只查看本機的詳細信息,可以通過這個類:DhcpInfo df=wm.getDhcpInfo();
DhcpInfo類沒什麼方法,提供了一些欄位:
1、dns1 第一個DNS
2、dns2 如上
3、gateway 網關
4、ipAddress IP地址
5、netmask 子網掩碼
6、serverAddress 服務端地址(其實就是路由器ip,和網關一樣)
7、leaseDuration 和上面的getLinkSpeed() 方法的值接近,可能是連接速度,不過單位不是Mbps,getLinkSpeed() 得到72,這個欄位的值是7200

上面的IP與網關、子網掩碼等都是int型數值,直接看看不懂,附上一個我寫的方法把int轉成String類型。

private String intToString(int a){
StringBuffer sb=new StringBuffer();
int b=(a>>0)&0xff;
sb.append(b+".");
b=(a>>8)&0xff;
sb.append(b+".");
b=(a>>16)&0xff;
sb.append(b+".");
b=(a>>24)&0xff;
sb.append(b);
return sb.toString();
}

WifiConfiguration 類主要提供一個wifi配置的所有信息
有如下欄位(自己明白的不一定正確):
BSSID 接入點的mac地址。
SSID 接入點的名字。
networkId 網路號
preSharedKey WPA-PSK密碼,如果有就會得到一個*(這玩意就是判斷是不是有密碼的)
priority 優先順序
status 連接狀態,值是WifiConfiguration.Status中欄位的一種。

WifiConfiguration.Status 提供了3個欄位表示wifi連接的三種狀態
1.CURRENT 值為0,表示處於連接狀態
2.DISABLED 值為1,表示網路不可用
3. ENABLED 值為2,表示網路可用但沒連接

ScanResult wifi掃描到的接入點信息
1.BSSID
2.SSID
3.capabilities
4.frequency
5.level

關於接收WIFI狀態改變接收廣播信息:

ACTION: WifiManager.WIFI_STATE_CHANGED_ACTION ( "android.net.wifi.WIFI_STATE_CHANGED")wifi狀態變化觸發,觸發兩次。

可接收兩個信息:(鍵) (這個是監聽wifi狀態變化的,wifi狀態變化並不包括wifi的連接狀態,只是單純的指示wifi的5種狀態)

1. WifiManager.EXTRA_PREVIOUS_WIFI_STATE("previous_wifi_state") int型值 intent.getIntExtra("鍵",0);(第二個為得不到時的默認值)

2. WifiManager.EXTRA_WIFI_STATE("wifi_state") int型值 intent.getIntExtra("鍵",0);(第二個為得不到時的默認值)

ACTION: WifiManager.NETWORK_STATE_CHANGED_ACTION("android.net.wifi.STATE_CHANGE")wifi連接網路的狀態廣播,連接過程中接收多次,在連接過程中可與獲取NetworkInfo對象,通過ni.getState()可以獲取wifi連接狀態。如果連接state處於connected狀態,可以通過WifiManager.EXTRA_WIFI_INFO得到wifiInfo對象。(不重要細節:測試時發現 下面isconnected()方法為true時,這個廣播還處於connecting狀態,再一次廣播才變成connected)

可接收兩個信息:(鍵)

1. WifiManager.EXTRA_BSSID("bssid") String類型值 intent.getStringExtra("鍵")

2. WifiManager.EXTRA_NETWORK_INFO("networkInfo") T getParcelableExtra(「鍵」)

ACTION: WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION( "android.net.wifi.supplicant.CONNECTION_CHANGE") 判斷是否WIFI打開了,變化觸發一次

可接收一個信息:(鍵)(這個應該是廣播wifi啟動狀態的,true表示連接到wifi設備,一般在wifi state處於enable時得到,false則表示斷開設備連接,wifi此時狀態為disabling。這只是指機器內的wifi連接狀態變化,與網路無關)

1. WifiManager.EXTRA_SUPPLICANT_CONNECTED("connected") boolean類型返回值 intent.getBooleanExtra(「鍵」, true)第二個是默認值

ACTION: WifiManager.SUPPLICANT_STATE_CHANGED_ACTION("android.net.wifi.supplicant.STATE_CHANGE")發送WIFI連接的過程信息,如果出錯ERROR信息才會收到。連接WIFI時觸發,觸發多次。

可接收兩個信息:(鍵)

1. WifiManager.EXTRA_NEW_STATE("newState") intent.getParcelableExtra("鍵")

2. WifiManager.EXTRA_SUPPLICANT_ERROR("supplicantError") int型值 getIntExtra(「鍵」, int)

WIFI狀態int值對應的狀態:

WifiManager.WIFI_STATE_DISABLED ==1

WifiManager.WIFI_STATE_DISABLING ==0

WifiManager. WIFI_STATE_ENABLED==3

WifiManager. WIFI_STATE_ENABLING==2

WifiManager. WIFI_STATE_UNKNOWN==4

上面的是在有wifi的環境下測的,沒在沒WIFI的環境下測,不一定準,但差不多了。測試機型HTC G17。

如果在連接WIFI的過程中(Connecting),去連接網路地址(比如http://www..com)會得到找不到地址的異常,並且在8秒左右之內(就測了一台定製機),不能連接這一地址,否則報找不到地址異常。

這個包並不判斷網路連接狀態,只是判斷wifi的各種狀態,如果需要判斷網路狀態, 在android.net包中。ConnectivityManager 。

//判斷WIFI是否連接
private boolean isConnected(Context context){
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
System.out.println(ni.getState());
System.out.println(ni.getDetailedState()+"-----");
if(ni != null && ni.getState()==State.CONNECTED)
return true;
return false;
}

private boolean isWifiConected(Context context) {
WifiManager wm = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> list = wm.getConfiguredNetworks();
Iterator<WifiConfiguration> it = list.iterator();
while (it.hasNext()) {
WifiConfiguration wc = it.next();
if (wc.status == WifiConfiguration.Status.CURRENT)
return true;
}
return false;
}//2012.11.12在4.0機器上發現這個方法一直返回false,估計我理解錯了,不要用。

WifiInfo不為空並不代表這個類裡面就存了信息,getMacAdress可能為空。

public String getMac() {
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wi = wm.getConnectionInfo();
if(wi == null)
return null;
return wi.getMacAddress();
}

❼ android wifimanager怎麼調用隱藏的addToBlacklist方法

public boolean addToBlacklist(String a){
try {
Method method = mWifiManager.getClass().getMethod("addToBlacklist",String.class );
boolean s=(Boolean)method.invoke(mWifiManager,a);
return s;
} catch (Exception e) {
return false;
}
}

❽ android wifimanager.forget方法沒有

還是需要許可權的。 有兩種解決方案,一種是用busybox作為後門。 另外一個如以下參考資料: 需要permission: <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> 更改代碼為: android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_USE_STATIC_IP, "0"); android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS1, "192.168.0.2"); android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS2, "192.168.0.3"); android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_GATEWAY, "192.168.0.1"); android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_NETMASK, "255.255.255.0"); android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_IP, "1");

閱讀全文

與androidwifimanager相關的資料

熱點內容
pdf阿西莫夫 瀏覽:541
粵語版劉德華電影 瀏覽:844
4日本伺服器地址 瀏覽:656
期望與方差運演算法則 瀏覽:591
國網加密的u盤怎麼變成普通的 瀏覽:942
日活過萬的app哪裡找 瀏覽:577
編程如何與電腦同步 瀏覽:205
程序員常用的瀏覽器 瀏覽:836
pic單片機查表 瀏覽:695
有肉的同志片推薦 瀏覽:800
周星馳電影大話西遊2粵語在哪裡觀看 瀏覽:627
看電視視頻網站 瀏覽:808
老槍女主角和茜茜公主 瀏覽:603
xfplay愛情電影網社保網址 瀏覽:123
gv860. com/?fxid=7848836 瀏覽:975
指點蜜津txt全文下載 瀏覽:753
如何讓安卓手機的wifi更快 瀏覽:573
程序員本科生 瀏覽:993
青雲籌碼源碼指標 瀏覽:759
php簡歷商城項目描述 瀏覽:775