要求用户打开Wi-Fi

时间:2013-05-14 09:11:23

标签: android android-intent wifi

我有一个应用程序几乎总是需要知道用户位置。

当我需要访问某个位置时,我会这样做:

final AlertDialog.Builder builder = new AlertDialog.Builder(
                        MapScreen.this);
builder.setTitle("MyAppName");
builder.setMessage("The location service is off. Do you want to turn it on?");
                builder.setPositiveButton("Enable location",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(
                                    final DialogInterface dialogInterface,
                                    final int i) {
                                startActivity(new Intent(
                                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
                            }
                        });
builder.setNegativeButton("Continue without location", null);
builder.create().show();

然而,GPS给了我一些并不总是足够精确的信息。 Wi-Fi总是给我足够的准确性,所以我想要求用户打开Wi-Fi,就像我要求他们打开位置一样。我不想只打开它,我希望用户收到有关它的通知,并手动启用它。

是否有任何意图将WiFi菜单带给用户?

3 个答案:

答案 0 :(得分:12)

以下意图显示了无线设置,如Wi-Fi,蓝牙和移动网络:

startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));

有关设置的完整列表:https://developer.android.com/reference/android/provider/Settings.html

有关startActivity方法的文档: https://developer.android.com/reference/android/app/Activity.html#startActivity(android.content.Intent)

(请记住startActivity只是扔掉而忘记,如果你想捕获用户所做的响应,你可以改为调用startActivityForResult,在这种情况下可能不需要)< / p>

答案 1 :(得分:4)

你可以尝试

Intent i = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
                startActivity(i);

答案 2 :(得分:2)

以前的答案引用了&#34; Settings.ACTION_WIRELESS_SETTINGS&#34;,但它太笼统了,因为它会打开一般无线连接的设置,而问题只是关于wifi。 我正在使用&#34; Settings.ACTION_WIFI_SETTINGS&#34;如下

Intent turnWifiOn = new Intent(Settings.ACTION_WIFI_SETTINGS);
startActivity(turnWifiOn);

注意:它不会只打开一个对话框,而是打开一个活动。