2012-07-11 54 views
10

Tôi có một ứng dụng sử dụng nhà cung cấp mạng cho vị trí của nó. Mỗi khi ứng dụng bắt đầu, nó sẽ kiểm tra xem liệu nhà cung cấp mạng có được kích hoạt hay không bằng cách sử dụng phương thức isProviderEnabled() trong LocationManager. Nếu nó trả về false, tôi trình bày một cảnh báo cho người dùng để kích hoạt Network Provider và sau đó sử dụng ứng dụng. Logic này đã hoạt động thực sự tốt, với một vài ngoại lệ với các thiết bị không được Google chứng nhận (không phải là mối quan tâm vì chúng thường không có API Maps). Gần đây, với một số thiết bị trên ICS và bây giờ trên trình giả lập JellyBean tôi nhận được một "sai" nhất quán cho isProviderEnabled() mặc dù nó được kích hoạt.Android LocationManager.isProviderEnabled() luôn trả về false

Tôi đã chuyển sang sử dụng chuỗi được trả lại từ Cài đặt.Secure.getString (getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED)) để xem liệu nó có chứa "mạng" hay không. Nó là một hack nhưng nó đang làm việc cho bây giờ. Tôi rất thích có thể sử dụng phương thức isProviderEnabled().

Có ai thấy vấn đề này trước đây không?

+2

Tôi cũng đang gặp vấn đề này! Bạn có bất kỳ công việc xung quanh cho nó? – gkris

Trả lời

0

Từ doc API cho: LocationManager.GPS_PROVIDER

cung cấp dịch vụ này xác định vị trí sử dụng các vệ tinh. Tùy thuộc vào điều kiện , nhà cung cấp này có thể mất một lúc để trả lại sửa chữa vị trí. Yêu cầu quyền ACCESS_FINE_LOCATION.

Vì vậy, nếu bạn không yêu cầu ACCESS_FINE_LOCATION, nó sẽ trả về false.

0

@naqi @gkris Tôi cũng nhận thấy vấn đề này trong đó isProviderEnabled(LocationManager.GPS_PROVIDER) đã trả lại false.
Giải pháp này cũng phải hỏi người sử dụng để thiết lập các Location Method-High Accuracy thay vì Battery Saving hoặc Device Only

Thiết lập này được phát hành theo cài đặt vị trí và có tên khác nhau trên các thiết bị khác nhau. Trên một số thiết bị mà tôi đã thử nghiệm trên, thiết lập này là với tên Mode, Location Mode, Location Method vv Ngoài ra giá trị có thể High Accuracy hoặc GPS hoặc GPS, Wifi and Mobile Networks

nhà phát triển sẽ phải đào tạo người dùng về vấn đề này.

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