Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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 连接到wifi后,等待输入的密码正确并显示已连接的响应?_Java_Android - Fatal编程技术网

Java 连接到wifi后,等待输入的密码正确并显示已连接的响应?

Java 连接到wifi后,等待输入的密码正确并显示已连接的响应?,java,android,Java,Android,我想创建一个wifi扫描应用程序,在listview中显示附近有可用wifi的用户,单击listview将打开输入wifi密码的对话框,因此我想当用户输入密码并单击connect按钮时。它将关闭对话框,将创建wificonfiguration对象,wifimanager将调用reconnect,此时我希望用户知道输入的密码是正确的,并且他已连接 显示提示,如果输入的密码错误,则显示您输入的密码错误/已断开连接 public class NextPage extends ListActivity

我想创建一个wifi扫描应用程序,在listview中显示附近有可用wifi的用户,单击listview将打开输入wifi密码的对话框,因此我想当用户输入密码并单击connect按钮时。它将关闭对话框,将创建wificonfiguration对象,wifimanager将调用reconnect,此时我希望用户知道输入的密码是正确的,并且他已连接 显示提示,如果输入的密码错误,则显示您输入的密码错误/已断开连接

public class NextPage extends ListActivity {


//public class MainActivity extends ListActivity {
    WifiManager mainWifiObj;
    WifiScanReceiver wifiReciever;
    ListView list;
    String wifis[];

    EditText pass;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_next_page);

        list=getListView();
        mainWifiObj = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        wifiReciever = new WifiScanReceiver();
        mainWifiObj.startScan();

        // listening to single list item on click
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                // selected item
                String ssid = ((TextView) view).getText().toString();
                connectToWifi(ssid);
                Toast.makeText(getApplicationContext(),"Wifi SSID : "+ssid,Toast.LENGTH_SHORT).show();

            }
        });
    }

    protected void onPause() {
        unregisterReceiver(wifiReciever);
        super.onPause();
    }

    protected void onResume() {
        registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        registerReceiver(wifiReciever,new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));

        super.onResume();
    }
    class WifiScanReceiver extends BroadcastReceiver {
        public  boolean connected = false;
        @SuppressLint("UseValueOf")
        public void onReceive(Context c, Intent intent) {
            List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
            wifis = new String[wifiScanList.size()];
            for(int i = 0; i < wifiScanList.size(); i++){
                wifis[i] = ((wifiScanList.get(i)).toString());
            }
            String filtered[] = new String[wifiScanList.size()];
            int counter = 0;
            for (String eachWifi : wifis) {
                String[] temp = eachWifi.split(",");

                filtered[counter] = temp[0]+temp[1]+temp[2]+temp[3];//.substring(5).trim();//
                //
                // +"\n" + temp[2].substring(12).trim()+"\n" +temp[3].substring(6).trim();//0->SSID, 2->Key Management 3-> Strength

                counter++;

            }
            list.setAdapter(new ArrayAdapter<String>(getApplicationContext(),R.layout.list_item,R.id.label, filtered));
            ConnectivityManager mgr = (ConnectivityManager) c
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = mgr
                    .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

            connected = networkInfo != null && networkInfo.isConnected();

        }
        public boolean isConnected(){
            return connected;
        }
    }

    private void finallyConnect(String networkPass, String networkSSID) {
        WifiConfiguration wifiConfig = new WifiConfiguration();
        wifiConfig.SSID = String.format("\"%s\"", networkSSID);
        wifiConfig.preSharedKey = String.format("\"%s\"", networkPass);

        // remember id
        int netId = mainWifiObj.addNetwork(wifiConfig);
        mainWifiObj.disconnect();
        mainWifiObj.enableNetwork(netId, true);
        mainWifiObj.reconnect();   //i want the code here that if wifi 
                                   //object connect then i will get a 
                                  //response so that i can display user 
                              //that he has got connected I am a begineer 

        //WifiInfo info=mainWifiObj.getConnectionInfo();
        //info.getHiddenSSID();
        Toast.makeText(getApplicationContext(),"User:"+wifiReciever.isConnected(),Toast.LENGTH_LONG).show();

        /*if(info.getDetailedStateOf(info.getSupplicantState())==NetworkInfo.DetailedState.FAILED){
            if(info.getSSID().equals(networkSSID)){
                Toast.makeText(getApplicationContext(),"check: ",Toast.LENGTH_LONG).show();

            }else
            Toast.makeText(getApplicationContext(),"Not fouund",Toast.LENGTH_LONG).show();

        }*/
        //Toast.makeText(getApplicationContext(),"check: "+k,Toast.LENGTH_LONG).show();
        //WifiConfiguration conf = new WifiConfiguration();
      //  conf.SSID = "\"\"" + networkSSID + "\"\"";
      //  conf.preSharedKey = "\"" + networkPass + "\"";
       // mainWifiObj.addNetwork(conf);
    }

    private void connectToWifi(final String wifiSSID) {
        final Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.connect);
        dialog.setTitle("Connect to Network");
        TextView textSSID = (TextView) dialog.findViewById(R.id.textSSID1);

        Button dialogButton = (Button) dialog.findViewById(R.id.okButton);
        pass = (EditText) dialog.findViewById(R.id.textPassword);
        textSSID.setText(wifiSSID);

        // if button is clicked, connect to the network;
        dialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String checkPassword = pass.getText().toString();
                finallyConnect(checkPassword, wifiSSID);
                dialog.dismiss();
            }
        });
        dialog.show();
    }
}
公共类下一页扩展ListActivity{
//公共类MainActivity扩展了ListActivity{
WIFI经理mainWifiObj;
Wifiscan wifiReciever;
列表视图列表;
字符串wifis[];
编辑文本通行证;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u下一页);
list=getListView();
mainWifiObj=(WifiManager)getApplicationContext().getSystemService(Context.WIFI_服务);
wifiReciever=新的WifiScanReceiver();
mainWifiObj.startScan();
//在单击时侦听单个列表项
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//选定项目
字符串ssid=((TextView)视图).getText().toString();
connectToWifi(ssid);
Toast.makeText(getApplicationContext(),“Wifi SSID:+SSID,Toast.LENGTH_SHORT).show();
}
});
}
受保护的void onPause(){
未注册接收人(wifiReciever);
super.onPause();
}
受保护的void onResume(){
registerReceiver(wifiReciever,新的意向过滤器(WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION));
registerReceiver(wifiReciever,新的意向过滤器(WifiManager.WIFI\u STATE\u CHANGED\u ACTION));
super.onResume();
}
类WifiScanReceiver扩展了BroadcastReceiver{
公共布尔连接=false;
@SuppressLint(“UseValueOf”)
接收时公共无效(上下文c,意图){
List wifiScanList=mainWifiObj.getScanResults();
wifis=新字符串[wifiScanList.size()];
对于(int i=0;iSSID,2->密钥管理3->强度
计数器++;
}
setAdapter(新的ArrayAdapter(getApplicationContext(),R.layout.list_项,R.id.label,过滤));
连接管理器管理器=(连接管理器)c
.getSystemService(Context.CONNECTIVITY\u服务);
NetworkInfo NetworkInfo=mgr
.getNetworkInfo(ConnectionManager.TYPE_WIFI);
connected=networkInfo!=null&&networkInfo.isConnected();
}
公共布尔值未连接(){
回流连接;
}
}
私有void finallyConnect(字符串networkPass、字符串networkSSID){
WifiConfiguration wifiConfig=新的WifiConfiguration();
wifiConfig.SSID=String.format(“\%s\”,networkSSID);
wifiConfig.preSharedKey=String.format(“\%s\”,networkPass);
//记得身份证吗
int netId=mainWifiObj.addNetwork(wifiConfig);
mainWifiObj.disconnect();
mainWifiObj.enableNetwork(netId,true);
mainWifiObj.reconnect();//我想要这里的代码,如果
//对象连接,然后我将获得一个
//响应,以便我可以显示用户
//他和我有关系我是个新手
//WifiInfo=mainWifiObj.getConnectionInfo();
//info.getHiddensId();
Toast.makeText(getApplicationContext(),“User:+wifiReciever.isConnected(),Toast.LENGTH\u LONG.show();
/*if(info.getDetailedStateOf(info.getSupplicantState())==NetworkInfo.DetailedState.FAILED){
if(info.getSSID().equals(networkSSID)){
Toast.makeText(getApplicationContext(),“check:”,Toast.LENGTH_LONG.show();
}否则
Toast.makeText(getApplicationContext(),“Not found”,Toast.LENGTH_LONG.show();
}*/
//Toast.makeText(getApplicationContext(),“check:+k,Toast.LENGTH_LONG).show();
//WifiConfiguration conf=新的WifiConfiguration();
//conf.SSID=“\”\”\”+网络SSID+“\”\”;
//conf.preSharedKey=“\”+网络通行证+“\”;
//mainWifiObj.addNetwork(conf);
}
私有void connectToWifi(最终字符串wifiSSID){
最终对话框=新对话框(本);
setContentView(R.layout.connect);
对话框.setTitle(“连接到网络”);
TextView textSSID=(TextView)dialog.findViewById(R.id.textSSID1);
Button dialogButton=(Button)dialog.findViewById(R.id.okButton);
pass=(EditText)dialog.findViewById(R.id.textPassword);
textsid.setText(wifiSSID);
//如果单击按钮,则连接到网络;
dialogButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串checkPassword=pass.getText().toString();
最终连接(检查密码,wifiSSID);
dialog.dismise();
}
});