Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android WifiManager-到十六进制还是不到十六进制_Java_Android_Wifi_Wpa_Wep - Fatal编程技术网

Java Android WifiManager-到十六进制还是不到十六进制

Java Android WifiManager-到十六进制还是不到十六进制,java,android,wifi,wpa,wep,Java,Android,Wifi,Wpa,Wep,我试图通过Android编程连接到wifi,但是当我在Hex-Logcat状态下输入WEP密钥时,它太长了。当我尝试使用纯文本时,它表示它太短(并且从不连接)。当我在我构建的应用程序外部手动输入它时(只需输入密码:superman),它就会连接 附言 我尝试使用以下StackOverflow示例: 使用十六进制: String networkSSID = "ANDRE-PC_NETWORK"; String networkPass = "73:75:70:65:72:6d:61

我试图通过Android编程连接到wifi,但是当我在Hex-Logcat状态下输入WEP密钥时,它太长了。当我尝试使用纯文本时,它表示它太短(并且从不连接)。当我在我构建的应用程序外部手动输入它时(只需输入密码:superman),它就会连接

附言

我尝试使用以下StackOverflow示例:

使用十六进制:

    String networkSSID = "ANDRE-PC_NETWORK";
    String networkPass = "73:75:70:65:72:6d:61:6e";
日志:

04-04 12:12:13.643: E/wpa_supplicant(594): Line 0: Too long WEP key 0 '"73:75:70:65:72:6d:61:6e"'.
04-04 12:12:13.643: E/WifiConfigStore(479): failed to set wep_key0: "73:75:70:65:72:6d:61:6e"
04-04 12:12:13.793: I/ActivityManager(479): Displayed com.nfc.linked/.Connect: +855ms
04-04 12:12:16.283: W/GAV2(3422): Thread[Service Reconnect,5,main]: Connection to service failed 1
04-04 12:23:10.913: E/wpa_supplicant(594): Line 0: Invalid WEP key length 8 - this network block will be ignored
不带十六进制:

  String networkSSID = "ANDRE-PC_NETWORK";
  String networkPass = "superman";
日志:

04-04 12:12:13.643: E/wpa_supplicant(594): Line 0: Too long WEP key 0 '"73:75:70:65:72:6d:61:6e"'.
04-04 12:12:13.643: E/WifiConfigStore(479): failed to set wep_key0: "73:75:70:65:72:6d:61:6e"
04-04 12:12:13.793: I/ActivityManager(479): Displayed com.nfc.linked/.Connect: +855ms
04-04 12:12:16.283: W/GAV2(3422): Thread[Service Reconnect,5,main]: Connection to service failed 1
04-04 12:23:10.913: E/wpa_supplicant(594): Line 0: Invalid WEP key length 8 - this network block will be ignored
资料来源:

import java.util.List;

import android.app.Activity;    
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.content.Context; 

public class Connect extends Activity  {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.connect);
        String networkSSID = "ANDRE-PC_NETWORK";
        String networkPass = "superman";

        WifiConfiguration conf = new WifiConfiguration();
        conf.SSID = "\"" + networkSSID + "\"";   //ssid must be in quotes


        conf.wepKeys[0] = "\"" + networkPass + "\""; 
        conf.wepTxKeyIndex = 0;
        conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
       conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 

        conf.preSharedKey = "\""+ networkPass +"\"";

        conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

        WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE); 
        wifiManager.addNetwork(conf);

        List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
        for( WifiConfiguration i : list ) {
            if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
                 wifiManager.disconnect();
                 wifiManager.enableNetwork(i.networkId, true);
                 wifiManager.reconnect();                

                 break;
            }           
         }

    }}
import java.util.List;
导入android.app.Activity;
导入android.net.wifi.WifiConfiguration;
导入android.net.wifi.WifiManager;
导入android.os.Bundle;
导入android.util.Log;
导入android.content.Context;
公共类连接扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.connect);
字符串networkSSID=“ANDRE-PC_网络”;
字符串networkPass=“超人”;
WifiConfiguration conf=新的WifiConfiguration();
conf.SSID=“\”“+networkSSID+”\”“;//SSID必须在引号中
conf.wepKeys[0]=“\”“+networkPass+”\”;
conf.wepTxKeyIndex=0;
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.alloweGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
conf.preSharedKey=“\”+网络通行证+“\”;
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiManager WifiManager=(WifiManager)getSystemService(WIFI_服务);
wifiManager.addNetwork(conf);
List List=wifiManager.getConfiguredNetworks();
用于(无线配置i:列表){
如果(i.SSID!=null&&i.SSID.equals(“\”+networkSSID+“\”)){
wifiManager.disconnect();
wifiManager.enableNetwork(即networkId,true);
wifiManager.reconnect();
打破
}           
}
}}
试试:


顺便说一句,还有一个问题我正在经历。。。现在,当执行上面的源代码时——使用您建议的密码格式——它将为ANDRE-PC_网络创建一个新的网络配置文件,作为WEP网络而不是WPA/WPA2(并且从不连接——因为没有标题为“ANDRE-PC_网络[正在使用WPA/WPA2]”的WEP网络)如果查看参考的教程,需要设置不同的配置参数,具体取决于要连接的网络是否为WEP、WPA等。您已经为WEP和WPA指定了配置。如果网络为WPA,则只应指定WPA的配置(即:只有
预共享密钥
wepKeys
允许密钥管理
允许组密码
)没有简单的方法区分这两种密码(并相应地选择)有吗?对不起,我不知道。我得自己投入一些精力去研究。也许其他人知道。祝你好运!谢谢你,先生!非常感谢你的帮助。