2012-03-18 40 views
6

Android cung cấp quyền được gọi là "SET_TIME_ZONE" với cấp phép của hệ điều hành "nguy hiểm". Có ai biết rằng cho một ứng dụng với sự cho phép này, làm thế nào ứng dụng có thể thiết lập múi giờ?Android cách đặt múi giờ thông qua ứng dụng

Cảm ơn.

Trả lời

1

Để đặt múi giờ theo chương trình, bạn cần sử dụng Lớp ngày. Xem tài liệu tham chiếu here.

Bạn cần sử dụng phương thức setTimeZone() của SimpleDateFormat Lớp.

Sau đây là mẫu mã cho thiết lập Time Zone của Mỹ theo

// First Create Object of Calendar Class 
Calendar calendar = Calendar.getInstance();   
// Now Set the Date using DateFormat Class 
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z"); 
// Finally Set the time zone using SimpleDateFormat Class's setTimeZone() Method 
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); 
+0

Theo ý kiến ​​của bạn, mã có hoạt động nếu ứng dụng không có quyền SET_TIME_ZONE không? – Jake

+1

@Jake: Nó phải "hoạt động". Tất cả những gì nó làm là thiết lập 'TimeZone' cho một đối tượng của bạn. Điều đó giống như nói 'int a = 43', không có gì mà hệ điều hành quan tâm. Cài đặt chung là những gì bạn cần quyền, xem câu trả lời khác. – maaartinus

+1

Câu trả lời này cho thấy cách đặt múi giờ trên một cá thể SimpleDateFormat, không phải hệ thống. Xem câu trả lời của Dheeraj. – spaaarky21

14

Nếu mục tiêu của bạn là để thay đổi múi giờ mặc định của hệ thống, sau đó sử dụng setTimeZone() của AlarmManager.

+0

Cảm ơn! những công việc này. – herbertD

3

Bạn có thể thiết lập TimeZone theo nhiều cách:

  1. Bạn có thể sử dụng TimeZone.setDefault() mà sẽ thay đổi TimeZone cho quá trình hiện tại mà thôi. Nhưng như đã lưu ý trong tài liệu, điều này không được bảo đảm để tồn tại trong toàn bộ vòng đời của ứng dụng.

  2. Bạn có thể sử dụng setTimeZone() trong số AlarmManager để thay đổi TimeZone của toàn bộ thiết bị. Nhưng bạn cần "SET_TIME_ZONE" -permission cho điều đó.

Nếu bạn nghĩ 1. là nguy hiểm và bạn không có sự cho phép cho 2. Cách tiếp cận tốt nhất của bạn là để có được tất cả các ngày từ Calendar và thiết lập TimeZone trên của bạn Lịch thẩm qua setTimeZone().

+0

Đó là một sự xấu hổ giải pháp đầu tiên không được đảm bảo để làm việc cho 100%. Bạn có thêm thông tin trong trường hợp 'TimeZone.setDefault()' bị vô hiệu hoặc ghi đè không? Tài liệu chỉ nêu rõ "Giá trị này có thể bị xóa hoặc ghi đè bất cứ lúc nào" nhưng tài liệu không giải thích chi tiết hơn khi điều này xảy ra và tại sao. –

+0

@StefanArn Xin lỗi, tôi không có bất kỳ thông tin nào. Nhưng tôi nghi ngờ nó có thể được sửa đổi bởi hệ thống, nếu thiết bị được cấu hình để đặt ngày và múi giờ theo mạng hoặc các nguồn tương tự (tức là GPS). – AlexS

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