当有Wi-Fi连接时,在loginActivity中启动loginActivity

时间:2011-11-16 16:33:22

标签: android android-layout

我对Android应用程序非常陌生。我的应用程序正在通过在没有Wi-Fi连接时从SQLite数据库中读取数据来工作。应用程序的入口点是登录屏幕。

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

问题是我不知道如何在设置Wi-Fi后重新启动应用程序以从服务器获取数据。

3 个答案:

答案 0 :(得分:0)

你还没有给我们太多的帮助,所以我能做的最好的就是给你一些高水平的建议。所有你需要做的就是一旦你完成设置wifi,然后启动另一个启动你的登录活动的Intent。因此,一旦完成WiFi设置,请执行以下操作:

Intent loginActivity = new Intent(this, LoginActivity.class);
startActivity(loginActivity);

这假定您从一个扩展Context的类中调用,并且您的登录活动类的名称为LoginActivity

答案 1 :(得分:0)

如果没有,wifi会给他提供警告对话框 你应该使用startActivityForResult()

 protected void onActivityResult(int requestCode, int resultCode,
             Intent data)

这里有一些教程可以让你知道:nice example

developer site

答案 2 :(得分:0)

除了我对@ 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扩展类来实现。

希望这会有所帮助; - )