Android 当存在Wi-Fi连接时,在loginActivity本身中启动loginActivity
我对安卓应用程序还不太熟悉。我的应用程序在没有Wi-Fi连接的情况下从SQLite数据库读取数据。应用程序的入口点是登录屏幕 当没有Wi-Fi连接和缓存时,我们会弹出一条消息来设置Wi-Fi连接。一旦他们设置了Wi-Fi,我们就需要开始获取初始配置,以便在服务器的登录屏幕中显示一些数据Android 当存在Wi-Fi连接时,在loginActivity本身中启动loginActivity,android,android-layout,Android,Android Layout,我对安卓应用程序还不太熟悉。我的应用程序在没有Wi-Fi连接的情况下从SQLite数据库读取数据。应用程序的入口点是登录屏幕 当没有Wi-Fi连接和缓存时,我们会弹出一条消息来设置Wi-Fi连接。一旦他们设置了Wi-Fi,我们就需要开始获取初始配置,以便在服务器的登录屏幕中显示一些数据 问题是,我不知道一旦我们设置了Wi-Fi,如何重新启动应用程序以从服务器获取数据 你没有给我们太多的建议,所以我只能给你一些高层次的建议。你所需要做的就是一旦你设置好wifi,然后启动另一个意图,开始你的登录活动
问题是,我不知道一旦我们设置了Wi-Fi,如何重新启动应用程序以从服务器获取数据 你没有给我们太多的建议,所以我只能给你一些高层次的建议。你所需要做的就是一旦你设置好wifi,然后启动另一个意图,开始你的登录活动。因此,一旦完成wifi设置,请执行以下操作:
Intent loginActivity = new Intent(this, LoginActivity.class);
startActivity(loginActivity);
这假设您是从扩展了
上下文的类中调用的,并且您的登录活动类的名称是LoginActivity
,如果没有,请向他发送wifi警报对话框和
你应该使用startActivityForResult()
及
以下是一些教程,可以帮助您入门:
除了我对@Kurtis答案的评论之外,这里还有一段快速而肮脏的示例代码,您可以用来监听Wifi状态的变化
public class TestProjectActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Register for Wifi state changes.
this.registerReceiver(wifiChangedReceiver, new IntentFilter(
WifiManager.WIFI_STATE_CHANGED_ACTION));
}
// BroadcastReceiver that will get notified when the Wifi state changes.
private BroadcastReceiver wifiChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
int extraWifiState = arg1.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN);
// No need to listen for all the states, but it might be interesting
// at a later point ;)
switch (extraWifiState) {
case WifiManager.WIFI_STATE_DISABLED:
showToast("Wifi disabled...");
break;
case WifiManager.WIFI_STATE_DISABLING:
showToast("Wifi disabling...");
break;
case WifiManager.WIFI_STATE_ENABLED:
showToast("Wifi enabled...");
break;
case WifiManager.WIFI_STATE_ENABLING:
showToast("Wifi enabling...");
break;
default:
break;
}
}
};
// Instead of showing a toast, you could launch a new activity.
private void showToast(String action) {
Toast.makeText(this, action, Toast.LENGTH_LONG).show();
}
// When leaving the activity that has registered for a broadcast, remember
// to unregister the broadcast or you'll get an exception at some point.
@Override
protected void onStop() {
super.onStop();
this.unregisterReceiver(wifiChangedReceiver);
}
}
有些人可能会争辩说,最好将BroadcastReceiver移动到它自己的类中。这可以通过创建自己的类并通过BroadcastReceiver扩展类来实现
希望这有帮助;-) 欢迎来到Stackoverflow!如果你觉得回复有帮助,请投票表决。如果回答成功回答了您的问题,请单击旁边的绿色复选标记以接受回答。另外,关于如何写一个好的问题,请参考以下建议作为旁注:您应该收听正在广播的Wifi状态更改。因此,当您收到Wifi已改为“开启”的广播时,启动登录活动。如果您提供一些示例代码来执行此操作,这将是一个很大的帮助。谢谢,我在回答中添加了一些代码。但是,如果不了解更多关于您的程序的信息,我将无法提供更多信息。我在loginactivity中添加了一个重新加载按钮,并在他们单击重新加载按钮以获得初始配置时使用该按钮进行编码。但那没用。当他们返回此登录屏幕时,我需要继续此活动。我无法添加其他活动来启动此活动。这是用户打开android平板电脑时的第一个屏幕(主页)。
public class TestProjectActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Register for Wifi state changes.
this.registerReceiver(wifiChangedReceiver, new IntentFilter(
WifiManager.WIFI_STATE_CHANGED_ACTION));
}
// BroadcastReceiver that will get notified when the Wifi state changes.
private BroadcastReceiver wifiChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
int extraWifiState = arg1.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN);
// No need to listen for all the states, but it might be interesting
// at a later point ;)
switch (extraWifiState) {
case WifiManager.WIFI_STATE_DISABLED:
showToast("Wifi disabled...");
break;
case WifiManager.WIFI_STATE_DISABLING:
showToast("Wifi disabling...");
break;
case WifiManager.WIFI_STATE_ENABLED:
showToast("Wifi enabled...");
break;
case WifiManager.WIFI_STATE_ENABLING:
showToast("Wifi enabling...");
break;
default:
break;
}
}
};
// Instead of showing a toast, you could launch a new activity.
private void showToast(String action) {
Toast.makeText(this, action, Toast.LENGTH_LONG).show();
}
// When leaving the activity that has registered for a broadcast, remember
// to unregister the broadcast or you'll get an exception at some point.
@Override
protected void onStop() {
super.onStop();
this.unregisterReceiver(wifiChangedReceiver);
}
}