2012-10-17 138 views
14

Tôi đã googled, nhưng tôi không thể tìm thấy lời khuyên nào để ngăn người dùng thay đổi ngày/giờ của hệ thống trong android.Làm cách nào để ngăn người dùng thay đổi ngày/giờ của hệ thống (trong Android)?

Chúng tôi đang phát triển một ứng dụng doanh nghiệp, chúng tôi muốn ngăn người dùng thiết bị có thể đặt cài đặt thời gian. Nói cách khác, chúng tôi muốn thiết lập một chính sách xác định, người dùng không thể thay đổi ngày tháng và thời gian trong thiết bị Android. Có đề xuất nào để thực hiện việc này không? Cảm ơn.

+0

+1 cho câu hỏi thực sự hay. – Lucifer

+0

Tôi chắc chắn điều đó là không thể. Bạn có thể sử dụng máy thu phát sóng để được thông báo khi thời gian đã được thay đổi bởi người dùng và sau đó dựa trên tính toán của bạn làm bất cứ điều gì bạn muốn. Tôi nghĩ trải nghiệm không tốt cho người dùng của bạn khi họ thấy họ không thể thay đổi thời gian vì ứng dụng của bạn. – Hesam

+0

Tôi nghi ngờ nó sẽ là có thể. Ưu tiên hàng đầu của điện thoại là nhận cuộc gọi và SMS ngay, ưu tiên thứ hai sẽ là những thứ cơ bản như thời gian và ngày tháng. Ứng dụng không được chặn bất kỳ chức năng nào trong số đó. – Muz

Trả lời

1

Vì không có hỗ trợ chính sách cho điều này trong khung quản trị viên thiết bị, bạn không thể. Gửi yêu cầu tính năng, nó có thể được thêm vào trong phiên bản tiếp theo.

+0

Cảm ơn tôi thấy tôi có thể ngăn người dùng thay đổi cài đặt ngày/giờ bằng cách ngăn hoạt động cài đặt ngày/giờ của người dùng trong Android. –

+0

Và bạn đã quản lý điều này như thế nào? Dù bạn có gì, rất có khả năng nó sẽ hoạt động đáng tin cậy trên tất cả các phiên bản Android, đặc biệt là những phiên bản gần đây. –

+1

Tôi sử dụng trình quản lý hoạt động để kiểm tra xem hoạt động nào đang chạy.Vì vậy, tôi có thể gọi một hoạt động khác nếu người dùng chọn hoạt động cài đặt ngày/giờ. –

1

Tôi không biết cách nào để bạn có thể thay đổi hành vi mặc định của thiết bị.
Tuy nhiên, bạn có thể ngăn ứng dụng của mình chạy nếu thời gian hệ thống khác với thời gian mạng. Hoặc bạn có thể sử dụng thời gian mạng trong ứng dụng của mình thay vì thời gian hệ thống.

Câu trả lời cho bài đăng này giải thích cách truy cập thời gian mạng.

How can I get the "network" time, (from the "Automatic" setting called "Use network-provided values"), NOT the time on the phone?

4

Đây là một lựa chọn thứ ba mà nên tiết kiệm đáng kể về tuổi thọ pin:

Đăng ký một Broadcast Receiver cho khi thời gian bị thay đổi bởi người sử dụng. Sau đó vô hiệu hóa ứng dụng cho đến khi thời gian thiết bị được kiểm tra theo thời gian mạng hoặc thời gian máy chủ.

Những người nhận phát sóng này tồn tại. Tôi vừa kiểm tra ngay bây giờ với ứng dụng này có tên là Internal Broadcast Monitor Tôi vừa tìm thấy trên Google Play.

enter image description here

Dưới đây là phần thú vị dưới đây, nơi tôi đã thay đổi cả thời gian và ngày tháng:

enter image description here

Và dưới đây là phần mà tôi đã thay đổi múi giờ: enter image description here.

+0

Tính năng này không hoạt động nếu người dùng đóng dịch vụ ứng dụng và sau đó thay đổi thời gian thiết bị. – user3782779

+0

@ user3782779, Bộ thu phát không yêu cầu dịch vụ đang chạy. Đó là toàn bộ vấn đề. –

+0

Sau đó, tôi có thể chạy một đoạn mã của tôi trong Broadcast Receiver ngay cả trong quá trình của tôi và dịch vụ của tôi bị giết không? – user3782779

-1

bạn có thể lưu thời gian hiện tại vào db khi ứng dụng bắt đầu và kiểm tra cứ 1 phút nếu thời gian hiện tại không bằng thời gian db + 60 lần hệ thống đặt thành thời gian db + 60.