当我按下android中的按钮时,我使用以下代码检测并连接到特定的WiFi ssid。下面是代码。任何帮助将不胜感激。
Button b1 = (Button) findViewById(R.id.button); <br>
b1.setOnClickListener(new View.OnClickListener() {
<br><br>@Override
<br>public void onClick(View v) {
wifiConfiguration.SSID = "\"myHotspot\"";
wifiConfiguration.preSharedKey ="\"12345678\"";
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
int netId = wifiManager.updateNetwork(wifiConfiguration);
if (wifiManager.isWifiEnabled()) { //---wifi is turned on---
//---disconnect it first---
wifiManager.disconnect();
} else { //---wifi is turned off---
//---turn on wifi---
wifiManager.setWifiEnabled(true);
}
wifiManager.enableNetwork(netId, true);
wifiManager.reconnect();
}
});
我遇到的主要问题是我的手机连接到ssid,2-3秒后它失去连接并连接到我的家庭Wifi路由器(具有互联网连接)
注意: - 我尝试连接的ssid只是一个没有任何互联网连接的本地热点。
如果我尝试使用&#34; addNetwork(wifiConfiguration)&#34;它创建了多个同名的网络。那现在我该如何解决这个问题?!
答案 0 :(得分:2)
我认为这里的问题是您在调用 Guid jobId = Guid.NewGuid();
int goodRows = 0, badRows = 0;
DataTable bulkSimulatorData = new DataTable();
bulkSimulatorData.Columns.Add(new DataColumn("jobId", typeof(string)));
bulkSimulatorData.Columns.Add(new DataColumn("Column1", typeof(string)));
bulkSimulatorData.Columns.Add(new DataColumn("Column2", typeof(string)));
bulkSimulatorData.Columns.Add(new DataColumn("Column3", typeof(string)));
if (CDR.PostedFile != null && CDR.PostedFile.ContentLength > 0)
{
StreamReader csvReader = new StreamReader(CDR.PostedFile.InputStream);
{
string inputLine = "";
SimulatorCDR cdr = null;
while ((inputLine = csvReader.ReadLine()) != null)
{
try
{
string[] values = inputLine.Split(new Char[] { ',' });
if (values.Length == 4)
{
bulkSimulatorData.Columns.Add(new DataColumn("Column4", typeof(string)));
cdr = new SimulatorCDR(jobId, values[0].ToString(), values[1].ToString(), Convert.ToDecimal(values[2]), Convert.ToDecimal(values[3]));
if (cdr.Save())
{
bulkSimulatorData.Rows.Add(jobId, values[0].ToString(), values[1].ToString(), Convert.ToDecimal(values[2]), Convert.ToDecimal(values[3]));
goodRows++;
}
else
{
badRows++;
}
}
else
{
cdr = new SimulatorCDR(jobId, values[0].ToString(), values[1].ToString(), Convert.ToDecimal(values[2]));
if (cdr.Save())
{
bulkSimulatorData.Rows.Add(jobId, values[0].ToString(), values[1].ToString(), Convert.ToDecimal(values[2]));
goodRows++;
}
else
{
badRows++;
}
}
}
catch(Exception ex)
{
}
}
csvReader.Close();
}
}
if (goodRows > 0)
{
string constring = ConfigurationManager.ConnectionStrings["DTH"].ConnectionString;
string trafficType = Conversational.Checked ? "CONVO" : "DIALER";
using(SqlBulkCopy oSqlBulkCopy = new SqlBulkCopy(constring))
{
oSqlBulkCopy.BatchSize = goodRows;
oSqlBulkCopy.BulkCopyTimeout = 100000;
oSqlBulkCopy.ColumnMappings.Add("JobID", "JobID");
oSqlBulkCopy.ColumnMappings.Add("Column1", "SourceNumber");
oSqlBulkCopy.ColumnMappings.Add("Column2", "DestNumber");
oSqlBulkCopy.ColumnMappings.Add("Column3", "Duration");
oSqlBulkCopy.DestinationTableName = "[RATESIM].[dbo].[CDR]";
oSqlBulkCopy.WriteToServer(bulkSimulatorData);
}
string sql = "exec RATESIM.dbo.spQueueRatingSimulatorJob '" + jobId + "', '" + Utils.sanitize(Name.Text) + "', '" + Email.Text + "', '" + Utils.sanitize(Phone.Text) + "', '" + trafficType + "'";
if (Utils.ExecuteSQL("DTH", sql, 100))
{
Message.Text = "Parsed " + goodRows + " CDRs in " + (goodRows + badRows) + " lines. A report will be sent to your email address after processing is complete.";
Message.CssClass = "did_success";
}
}
后立即尝试enableNetwork
。通常,根据设备的不同,开启wifi需要5-10秒,直到那时对wifiManager.setWifiEnabled(true)
的任何呼叫都将丢失。因此,您连接到所需网络的呼叫会丢失,一旦打开wifi,您的设备就会连接到它记住的最后一个网络。
尝试创建一个循环,在其中继续检查是否wifiManager.enableNetwork
并保持循环直到它返回true(显然wifiManager.isWifiEnabled() == true
并且在AsyncTask中执行此操作或单独Thread.sleep()
)。只有在那之后才尝试拨打Thread
。