要求用户打开Wi-Fi

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

1
你也可以尝试这个:启用wifi - Iftikar Urrhman Khan
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,但在此情况下可能不需要。


1
谢谢!因为提供了完整的设置清单,所以接受了这个答案;-) - Charlie-Blake

4
您可以尝试:
Intent i = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
                startActivity(i);

3

之前的答案引用了"Settings.ACTION_WIRELESS_SETTINGS",但它太笼统了,因为它会打开通用无线连接设置,而问题只涉及wifi。 我使用以下代码:"Settings.ACTION_WIFI_SETTINGS"

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接