7

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

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

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 菜单带给用户?

4

3 回答 3

14

以下意图显示了无线设置,例如 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,在这种情况下可能不需要)

于 2013-05-14T09:16:27.423 回答
4

你可以试试

Intent i = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
                startActivity(i);
于 2013-05-14T09:12:33.503 回答
4

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

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

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

于 2017-06-28T16:12:59.857 回答