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