2013-05-14 43 views
6

我有一个几乎总是需要知道用户位置的应用程序。请求用户打开Wi-Fi

当我需要访问一个位置,我这样做:

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

你也可以试试这个[Enable wifi](http://stackoverflow.com/a/5674685/1083388) – 2013-05-14 09:24:19

回答

11

继意图显示无线设置,如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,可能没有必要在这种情况下)以前的答案是quotting

+1

谢谢!接受的答案,因为完整的设置列表;-) – razielsarafan 2013-05-14 11:23:04

+0

不客气:) – 2013-05-14 14:02:26

3

您可以尝试

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

谢谢! Upvoted – razielsarafan 2013-05-14 11:23:46

2

“Settings.ACTION_WIRELESS_SETTINGS”,但它太笼统了,因为它将打开通用无线连接的设置,而问题仅限于WiFi。 我使用“Settings.ACTION_WIFI_SETTINGS”如下

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

注意:它不会打开刚才的对话,而是一种活动来代替。