Android 当存在Wi-Fi连接时,在loginActivity本身中启动loginActivity

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连接的情况下从SQLite数据库读取数据。应用程序的入口点是登录屏幕

当没有Wi-Fi连接和缓存时,我们会弹出一条消息来设置Wi-Fi连接。一旦他们设置了Wi-Fi,我们就需要开始获取初始配置,以便在服务器的登录屏幕中显示一些数据


问题是,我不知道一旦我们设置了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);
    }
}