Java 如何延迟textview输出?
我正在使用下面的代码连接到wifi网络。有没有办法延迟textview文本的输出,使其在连接到wifi之前不会显示?消息在实际连接之前出现Java 如何延迟textview输出?,java,android,Java,Android,我正在使用下面的代码连接到wifi网络。有没有办法延迟textview文本的输出,使其在连接到wifi之前不会显示?消息在实际连接之前出现 import java.util.List; import android.app.Activity; import android.os.Bundle; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class TestActivity extends Activity {
/** Called when the activity is first created.
* @return */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button OffWifi = (Button)findViewById(R.id.offwifi);
OffWifi.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
WifiManager wifiManager = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
}
});
TextView tv= (TextView) findViewById(R.id.tv);
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"Test\""; //IMP! This should be in Quotes!!
wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.ENABLED;
wc.priority = 10;
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.preSharedKey = "\"Password\"";
WifiManager wifiManag = (WifiManager) this.getSystemService(WIFI_SERVICE);
boolean res1 = wifiManag.setWifiEnabled(true);
int res = wifi.addNetwork(checkPreviousConfiguration(wc));
Log.d("WifiPreference", "add Network returned " + res );
boolean es = wifi.saveConfiguration();
Log.d("WifiPreference", "saveConfiguration returned " + es );
boolean b = wifi.enableNetwork(res, true);
Log.d("WifiPreference", "enableNetwork returned " + b );
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if (connec != null && (connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)){
tv.setText("You are now connected! " + "Version 1.1");
}else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {
tv.setText("The was an error connecting, please try again.");
}
}
public WifiConfiguration checkPreviousConfiguration(WifiConfiguration wc) {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> configs = wifi.getConfiguredNetworks();
for(WifiConfiguration config : configs) {
if(config.SSID.equals(wc.SSID)) return config;
}
return wc;
}
}
import java.util.List;
导入android.app.Activity;
导入android.os.Bundle;
导入android.content.Context;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.net.wifi.WifiConfiguration;
导入android.net.wifi.WifiManager;
导入android.util.Log;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.TextView;
公共类测试活动扩展了活动{
/**在首次创建活动时调用。
*@返回*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WiFi按钮=(按钮)findViewById(R.id.OffWifi);
setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
WifiManager WifiManager=(WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
}
});
TextView tv=(TextView)findViewById(R.id.tv);
WifiManager wifi=(WifiManager)getSystemService(Context.wifi\u SERVICE);
WifiConfiguration wc=新的WifiConfiguration();
wc.SSID=“\”Test\”;//IMP!应该用引号括起来!!
wc.hiddenSSID=true;
wc.status=WifiConfiguration.status.ENABLED;
wc.priority=10;
wc.allowedKeyManagement.set(wificonfig.keymanagement.WPA\u PSK);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wc.allowedPairwisecipher.set(WifiConfiguration.Pairwiseciper.CCMP);
wc.allowedPairwisecipher.set(WifiConfiguration.Pairwiseciper.TKIP);
wc.preSharedKey=“\”密码\”;
WifiManager wifiManag=(WifiManager)this.getSystemService(WIFI_服务);
布尔值res1=wifiManag.setWifiEnabled(真);
int res=wifi.addNetwork(checkPreviousConfiguration(wc));
Log.d(“WifiPreference”,“添加返回的网络”+res);
布尔es=wifi.saveConfiguration();
Log.d(“WifiPreference”、“saveConfiguration returned”+es);
布尔b=wifi.enableNetwork(res,true);
Log.d(“WifiPreference”、“enableNetwork returned”+b);
ConnectivityManager connec=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_服务);
如果(connec!=null&&(connec.getNetworkInfo(1.getState()==NetworkInfo.State.CONNECTED)| |(connec.getNetworkInfo(0.getState()==NetworkInfo.State.CONNECTED)){
tv.setText(“您现在已连接!”+“版本1.1”);
}如果(connec.getNetworkInfo(0).getState()==NetworkInfo.State.DISCONNECTED | | connec.getNetworkInfo(1).getState()==NetworkInfo.State.DISCONNECTED){
tv.setText(“连接时出错,请重试”);
}
}
公共无线配置检查先前配置(无线配置wc){
WifiManager wifi=(WifiManager)getSystemService(Context.wifi\u SERVICE);
List configs=wifi.getConfiguredNetworks();
对于(WifiConfiguration config:configs){
if(config.SSID.equals(wc.SSID))返回config;
}
返回wc;
}
}
在我看来,您需要收听意图广播。使用AsyncTask
并将连接放入doInBackground
,setText
放入onPostExecute
public class Connect extends AsyncTask<String, Void, Boolean> {
private Activity activity;
private Context context;
public LoadContacts(Activity activity){
this.activity=activity;
context = activity;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected void onPostExecute(Boolean result) {
TextView tv= (TextView) activity.findViewById(R.id.tv);
if (connec != null && (connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)){
tv.setText("You are now connected! " + "Version 1.1");
}else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {
tv.setText("The was an error connecting, please try again.");
}
super.onPostExecute();
}
@Override
protected Boolean doInBackground(String... params) {
WifiManager wifi = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"Test\""; //IMP! This should be in Quotes!!
wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.ENABLED;
wc.priority = 10;
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.preSharedKey = "\"Password\"";
WifiManager wifiManag = (WifiManager) context.getSystemService(WIFI_SERVICE);
boolean res1 = wifiManag.setWifiEnabled(true);
int res = wifi.addNetwork(checkPreviousConfiguration(wc));
Log.d("WifiPreference", "add Network returned " + res );
boolean es = wifi.saveConfiguration();
Log.d("WifiPreference", "saveConfiguration returned " + es );
boolean b = wifi.enableNetwork(res, true);
Log.d("WifiPreference", "enableNetwork returned " + b );
ConnectivityManager connec = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
return true;
}
}
代码没有经过测试,可能会有一些错误,但我希望你能理解这一点……我认为不能保证他为连接WIFI而进行的那些函数调用会同步发生。我尝试了代码,但现在我得到了一个错误04-20 17:35:46.191:E/AndroidRuntime(338):java.lang.RuntimeException:执行doInBackground()时出错
public class TestActivity extends Activity {
/** Called when the activity is first created.
* @return */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Connect(this).execute();
}