如何在android 中获取Wifi设备的IP地址

如何在android 中获取Wifi设备的IP地址,第1张

wifi热点连接成功之后你把那个dhcp的地方用手动方式进入 就能够看到局域网的ip地址

要看公网的ip的话,可以用手机浏览器访问 ip138com 就能看到你的wifi路由器分配的公网的ip了

先进行WiFi权限的声明

<!-- 获取WiFi状态 -->

<uses-permission android:name="androidpermissionACCESS_NETWORK_STATE" />

<uses-permission android:name="androidpermissionACCESS_WIFI_STATE" />

<!--  api <= Android29调用setWifiEnabled  -->

<uses-permission android:name="androidpermissionCHANGE_WIFI_STATE" />

<!-- 定位权限(api >= 23 用于 WIFI扫描)-->

<uses-permission android:name="androidpermissionACCESS_FINE_LOCATION" />

<uses-permission android:name="androidpermissionACCESS_COARSE_LOCATION" />

注意:ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION是危险级权限需要使用中还需要动态申请,申请其中一个即可。

WifiManager mWifiManager = (WifiManager) getApplicationContext()getSystemService(ContextWIFI_SERVICE);

if (BuildVERSIONSDK_INT >=BuildVERSION_CODESR) {

Intent panelIntent =new Intent(SettingsPanelACTION_WIFI);

startActivityForResult(panelIntent,null);

}else{ mWifiManagersetWifiEnabled(!isEnable);}

可以通过监听系统广播来了解WiFi状态。

WIFI_STATE_CHANGED_ACTION:WiFi开关状态;

SCAN_RESULTS_AVAILABLE_ACTION:WiFi列表变化;

RSSI_CHANGED_ACTION:WiFi信号强度变化。

IntentFilter mFilter =new IntentFilter();

mFilteraddAction(WifiManagerWIFI_STATE_CHANGED_ACTION);

mFilteraddAction(WifiManagerSCAN_RESULTS_AVAILABLE_ACTION);

mFilteraddAction(WifiManagerRSSI_CHANGED_ACTION);

mReceiver =new BroadcastReceiver() {

@Override

public void onReceive(Context context,Intent intent) {

    handleEvent(intent);

}

};

registerReceiver(mReceiver, mFilter);

private void handleEvent(Intent intent) {

String action = intentgetAction();

if (WifiManagerWIFI_STATE_CHANGED_ACTIONequals(action)) {

final int wifiState =mWifiManagergetWifiState();

if(wifiState ==WifiManagerWIFI_STATE_ENABLED){

    postDelayed(()->{mRefreshLayoutautoRefresh();},1000);

}

}else if (WifiManagerSCAN_RESULTS_AVAILABLE_ACTIONequals(action)) {

}else if (WifiManagerRSSI_CHANGED_ACTIONequals(action)) {

if(SystemcurrentTimeMillis() -mLastUpateWifiRssiTime <1000){//刷新太快

            return;

}

}

updateWifiChange();

}

切记:wifistate切换到WifiManagerWIFI_STATE_ENABLED,mWifiManagerisWifiEnabled()需要有个等待时间切换。

3的基础上解析广播应答

private void updateWifiChange() {

final int wifiState =mWifiManagergetWifiState();

switch (wifiState) {

case WifiManagerWIFI_STATE_ENABLED:

ArrayListresults = (ArrayList)mWifiManagergetScanResults();

updateApListView(results);

mWlanSbsetChecked(mWifiManagerisWifiEnabled() );

break;

case WifiManagerWIFI_STATE_ENABLING:

break;

case WifiManagerWIFI_STATE_DISABLING:

mAdapterclearData();

mWlanSbsetChecked(mWifiManagerisWifiEnabled() );

break;

case WifiManagerWIFI_STATE_DISABLED:

break;

}

}

WifiManager wifi = (WifiManager) getSystemService(ContextWIFI_SERVICE);

WifiInfo info = wifigetConnectionInfo();

return infogetMacAddress()

详细看这里:>

import androidappActivity;

import androidbluetoothBluetoothAdapter;

import androidcontentContext;

import androidcontentIntent;

import androidnetwifiWifiInfo;

import androidnetwifiWifiManager;

import androidosBundle;

import androidwidgetTextView;

 

/

  获取手机WIFI的MAC地址

  @author 单红宇

 

 /

public class GetmacipinfoActivity extends Activity {

    / Called when the activity is first created /

    private static final int REQUEST_ENABLE_BT = 3;

    private WifiManager mWifi;

    private BluetoothAdapter bAdapt;

    private String btMac;

    private String WifiMac;

 

    @Override

    public void onCreate(Bundle savedInstanceState) {

        superonCreate(savedInstanceState);

        setContentView(Rlayoutmain);

        mWifi = (WifiManager) getSystemService(ContextWIFI_SERVICE);

 

        if (!mWifiisWifiEnabled()) {

            mWifisetWifiEnabled(true);

        }

 

        WifiInfo wifiInfo = mWifigetConnectionInfo();

 

        bAdapt = BluetoothAdaptergetDefaultAdapter();

 

        if (bAdapt != null) {

            if (!bAdaptisEnabled()) {

                Intent enBT = new Intent(BluetoothAdapterACTION_REQUEST_ENABLE);

                startActivityForResult(enBT, REQUEST_ENABLE_BT);

            }

 

            btMac = bAdaptgetAddress();

        } else {

            btMac = "No Bluetooth Device!";

        }

 

        if ((WifiMac = wifiInfogetMacAddress()) == null) {

            WifiMac = "No Wifi Device";

        }

 

        TextView mac = (TextView) findViewById(RidmacView);

        macsetTextSize(16);

         

//      查看已经连接上的WIFI信息,在Android的SDK中为我们提供了一个叫做WifiInfo的对象,这个对象可以通过WifiManagergetConnectionInfo()来获取。WifiInfo中包含了当前连接中的相关信息。

//      getBSSID()  获取BSSID属性

//      getDetailedStateOf()  获取客户端的连通性

//      getHiddenSSID()  获取SSID 是否被隐藏

//      getIpAddress()  获取IP 地址

//      getLinkSpeed()  获取连接的速度

//      getMacAddress()  获取Mac 地址

//      getRssi()  获取80211n 网络的信号

//      getSSID()  获取SSID

//      getSupplicanState()  获取具体客户端状态的信息

        StringBuffer sb = new StringBuffer();

        sbappend("\n获取BSSID属性(所连接的WIFI设备的MAC地址):" + wifiInfogetBSSID());

//      sbappend("getDetailedStateOf()  获取客户端的连通性:");

        sbappend("\n\n获取SSID 是否被隐藏:"+ wifiInfogetHiddenSSID());

        sbappend("\n\n获取IP 地址:" + wifiInfogetIpAddress());

        sbappend("\n\n获取连接的速度:" + wifiInfogetLinkSpeed());

        sbappend("\n\n获取Mac 地址(手机本身网卡的MAC地址):" + WifiMac);

        sbappend("\n\n获取80211n 网络的信号:" + wifiInfogetRssi());

        sbappend("\n\n获取SSID(所连接的WIFI的网络名称):" + wifiInfogetSSID());

        sbappend("\n\n获取具体客户端状态的信息:" + wifiInfogetSupplicantState());

        macsetText("WIFI网络信息:  " + sbtoString() + "\n\n蓝牙MAC:  " + btMac);

    }

}

看下这段代码或许对你有帮助!!

首先你的问题不是清楚提到到底要求log中看wifi的什么信息。所以我略略的回答下~

要知道当前连接的WiFi信息,

WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);

WifiInfo wifiInfo = wifi_servicegetConnectionInfo();

Loge("WiFi信息",wifiInfogetXXX());

XXX=你要的信息,wifiInfo点能点出来的。

广播获取WiFi信息,

     IntentFilter wifiIntentFilter;  // wifi监听器

     // wifi  

      wifiIntentFilter = new IntentFilter();  

      wifiIntentFilteraddAction(WifiManagerWIFI_STATE_CHANGED_ACTION);

      注册侦听,和android 电池侦听显示类似在可以在oncreate方法中加入。

以上是2个思路,也不知道你到底要什么信息,只能简单回答你了。

public class Clock extends Activity {

/ Called when the activity is first created /

@Override

public void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutmain);

WifiManager mWifiManager=(WifiManager) getSystemService(WIFI_SERVICE);

WifiInfo mWifiInfo=mWifiManagergetConnectionInfo();

int wifi=mWifiInfogetRssi();//获取wifi信号强度

TextView textview=(TextView)findViewById(Ridtextview);

textviewsetText(StringvalueOf(wifi));

}

}

记得要加权限<uses-permission android:name="androidpermissionACCESS_WIFI_STATE"/>

以上就是关于如何在android 中获取Wifi设备的IP地址全部的内容,包括:如何在android 中获取Wifi设备的IP地址、Android的WiFi功能总结、android里wifi开启,扫描后wifiManager.getScanResults();取得所有wifi信息,但没有mac地址如何取得等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9444782.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存