2013-05-14 34 views
6

Tôi có một ứng dụng hầu như luôn cần biết vị trí của người dùng.Yêu cầu người dùng bật Wi-Fi

Khi tôi cần phải truy cập vào một vị trí, tôi làm điều này:

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(); 

Tuy nhiên, GPS mang lại cho tôi một số thông tin đó không phải là đủ luôn chính xác. Wi-Fi luôn mang lại cho tôi đủ mức độ ưu tiên, vì vậy tôi muốn yêu cầu người dùng bật Wi-Fi giống như cách tôi yêu cầu họ bật vị trí. Tôi không muốn chỉ bật nó lên, tôi muốn người dùng được thông báo về nó, và để kích hoạt nó theo cách thủ công.

Có ý định nào để đưa menu Wi-Fi đến người dùng không?

+1

bạn có thể thử điều này cũng [Bật wifi] (http://stackoverflow.com/a/5674685/1083388) –

Trả lời

11

ý định sau cho thấy các thiết lập không dây như Wi-Fi, Bluetooth và mạng di động:

startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); 

Đối với danh sách đầy đủ của Cài đặt: https://developer.android.com/reference/android/provider/Settings.html

Đối với tài liệu về phương pháp startActivity: https://developer.android.com/reference/android/app/Activity.html#startActivity(android.content.Intent)

(lưu ý startActivity chỉ là ném và quên đi, nếu bạn muốn nắm bắt được phản ứng của những gì người dùng đã làm ra có bạn thay vì có thể gọi startActivityForResult, có lẽ không cần thiết trong trường hợp này)

+1

Cảm ơn bạn! Câu trả lời được chấp nhận vì danh sách đầy đủ các cài đặt ;-) – razielsarafan

+0

Bạn được chào đón :) –

3

Bạn có thể thử

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

Cảm ơn bạn! Upvoted – razielsarafan

2

Những câu trả lời trước được quotting "Settings.ACTION_WIRELESS_SETTINGS", nhưng nó quá chung chung, vì nó sẽ mở các thiết lập của kết nối không dây chung trong khi câu hỏi chỉ là về wifi. Tôi đang sử dụng "Settings.ACTION_WIFI_SETTINGS" như sau

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

Lưu ý: Nó sẽ không để mở chỉ là một hộp thoại, nhưng một hoạt động thay thế.

Các vấn đề liên quan