WifiManager.getScanResults() 未在 Android Jelly Bean 上提供 SSID

Posted

技术标签:

【中文标题】WifiManager.getScanResults() 未在 Android Jelly Bean 上提供 SSID【英文标题】:WifiManager.getScanResults() not giving SSID on Android Jelly Bean 【发布时间】:2014-09-24 12:02:26 【问题描述】:

我正在尝试获取最新接入点扫描的结果。所以使用android文档WifiManager in Android Documentation中提供的这种方法@

在其他所有设备和版本中,它工作正常,只是在 Android Jelly Bean 上出现问题。 它不会在从此方法检索的结果中提供 SSID 名称。

我在很多地方都读到了Jelly Bean中存在双引号“”的问题,是的,这是真的,因为我检查了当前连接的wifi名称并且它包含在“”中,所以我只删除了开头和结尾的引号,它给了我好名声。 但是在从 WifiManger.getScanResults() 中获取结果时,它甚至没有在检索到的结果中给出 SSID 名称。

这里是代码

    wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

    if (wifi.isWifiEnabled() == false)  // If Wifi is off, Switch it on
        wifi.setWifiEnabled(true);
    

    receiverWifi = new WifiReceiver();
    registerReceiver(receiverWifi, new IntentFilter(
            WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
    wifi.startScan();
    results = wifi.getScanResults();

    for(int i=0 ; i<results.size(); i++)       
        String reslt = results.get(i).toString();   
        Log.d("TAG", "wifi ->>>" + reslt);
    

谁能帮我解决这个问题?

提前致谢。

【问题讨论】:

能否请您显示您所做的代码。 更新了问题。添加了有问题的代码。 @pavanmvn 【参考方案1】:

Android 前版本将 SSID 括在引号中,而后 Jelly Bean 没有 http://developer.android.com/reference/android/net/wifi/WifiInfo.html#getSSID()

【讨论】:

【参考方案2】:

我已经找到了替代方法,我正在粘贴下面的代码

public class MainActivity extends Activity 

WifiManager mWifiManager;
String Available_Networks="";
TextView ShowSSIDs;
@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
    //mWifiManager.startScan();
    ShowSSIDs = (TextView) findViewById(R.id.ssId);
    List<WifiConfiguration> mScanResults = mWifiManager.getConfiguredNetworks();
    for(int x=0; x<mScanResults.size();x++)
        Available_Networks+=mScanResults.get(x).SSID+"\n";
    
    ShowSSIDs.setText(Available_Networks);



@Override
public boolean onCreateOptionsMenu(Menu menu) 
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;

【讨论】:

以上是关于WifiManager.getScanResults() 未在 Android Jelly Bean 上提供 SSID的主要内容,如果未能解决你的问题,请参考以下文章