2016-12-04 16 views
-2

私は特定のアクションを実行する前に、ユーザーがどのWifiネットワークに接続しているかを特定する必要があるアンドロイドプログラムを開発中です。基本的にこの文が真の権利であるかの場合だけでSSID名を返すことになっているストリングがequalsを使用して実行されていないが、作品が含まれている場合

 public String isConectedToPrivateNet(StringBuilder ssid) { 


    WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 

    ssid.replace(0, ssid.length(), wifiInfo.getSSID()); 
     Log.e("Data(b4 iF): ", ssid.toString()); 
    if(ssid.toString().equals("ACHILLES 101010")) { 
     Log.e("Data (iN iF): ", ssid.toString()); 

    }else { 
     ssid.replace(0, ssid.length(), "DIDN'T START"); 

    } 

    return ssid.toString(); 

} 

:これは私がこれを達成するために実行するコードにありますか?しかし、そうではなく、代わりに "DID NOT START"を返します。私のログを読むと、「データ(b4 if):」はSSIDが「ACHILLES 101010」であることを示しています。したがって、if文はtrueに評価する必要がありますが、なぜそうしないのでしょうか?

ここで興味深いのは次のとおりです。.equals()を.contains()に置き換えると、if文ブロックのコードが完全に実行され、SSIDが返されます。なぜこれはそうですか?

いくつかの注意事項*:StringBuilderのは、ここに空であるとして渡されますが、それの宣言と初期化

public StringBuilder ssid = new StringBuilder(""); 

は、私はまたにStringBufferを使用することを試みたが、同じことが起き*です。

+0

コピーは、logcatを隠し文字を表示するものに貼り付けます。 –

+0

@ cricket_007私はその人を試みましたが、隠された文字はありません。私はこのツールを使用しました:[show hidden](http://www.online-toolz.com/tools/string-functions.php#)。ありがとう –

答えて

0

SSID文字列の末尾にスペースが含まれていることがありますか?

使用してみてください:

if (ssid.toString().trim().equals("ACHILLES 101010")) 

は(トリム)は、末尾と先頭のスペースを削除します。

+0

それは動作しませんでした、まだ同じ動作します。 –

1

返されたSSIDに引用符が含まれているため、ACHILLES 101010の代わりに「ACHILLES 101010」と表示されます。 このようにコードを変更する必要がありました:

if(ssid.toString().equals("\"ACHILLES 101010\"")) { 
.... } 

すべてのお返事ありがとうございます。私は、より効果的な回答を得るためにログを掲載する必要がありましたが、とにかく感謝します。

関連する問題