2013-06-05 61 views
6

Tôi đang thử một số nội dung với Android khi tôi đang học phát triển Android, giờ đây tôi có một kịch bản ở đây.Thay đổi ngày hệ thống của điện thoại android trên nút bấm từ ứng dụng android

  • tôi muốn thay đổi ngày hệ thống điện thoại Android thông qua ứng dụng của tôi (đầu tiên tôi muốn biết là doable này?)

Layout như sau

layout

Bây giờ những gì tôi muốn là khi người dùng nhấp vào nút ngày nên tăng bằng cách nói 20 ngày làm thế nào tôi có thể làm điều này.

tôi vẫn chưa thể bắt đầu ... xin vui lòng giúp

+0

Bạn đã thử những gì và những gì bạn không thể bắt đầu? bạn có thể cung cấp thêm thông tin không? – JustWork

+0

không thể bắt đầu theo nghĩa tôi không biết, tôi không biết làm thế nào tôi có thể lấy ngày hệ thống và thay đổi nó thông qua ứng dụng của tôi. những gì inbuilt lớp học cung cấp các chức năng để có được và thiết lập ngày hệ thống –

+0

bạn muốn thay đổi ngày di động khi bạn bấm vào nút? – Blackbelt

Trả lời

4

Trên Android, cách duy nhất cho một ứng dụng làm có quyền ghi vào thời & ngày là để có được sự cho phép SET_TIME, mà chỉ có thể cho "các ứng dụng có trong hình ảnh hệ thống Android hoặc được ký bằng cùng một chứng chỉ như ứng dụng đã khai báo quyền. " (xem signatureOrSystem protection level).

Cách duy nhất để ứng dụng của bạn đạt đến cấp độ bảo vệ này là chạy trên thiết bị gốc hoặc xây dựng và ký vào rom android của riêng bạn.

Nếu đây là trường hợp của bạn, bạn có thể dễ dàng sử dụng AlarmManager hoặc chỉ đơn giản là phiên bản Calendar.

Chúc may mắn!

+0

Tôi nghĩ có nhiều thứ hơn là chỉ chạy trên một thiết bị gốc. Tôi đang chạy ứng dụng của mình trên Nexus 7 bắt nguồn từ và mặc dù tôi có thể tải ứng dụng để đặt thời gian từ tín hiệu GPS (Smart GPS Time, hoạt động như một nhà vô địch), mã của tôi gặp sự cố ngay lập tức khi tôi thử. Bất kỳ ý tưởng gì còn thiếu? – Rich

7

Như tôi đã nói điều đó là không thể. Bạn cần có sự cho phép của SET_TIME và quyền đó chỉ được hệ thống cấp cho các ứng dụng có trong hình ảnh hệ thống Android. Nếu bạn có thể đạt được đặc quyền đó, bạn có thể dễ dàng thay đổi với AlarmManager. SystemClock.setCurrentTimeMillis viết các tập tin/dev/allarm

adb shell ls -l /dev/alarm 
crw-rw-r-- system radio  10, 46 2013-06-12 10:46 alarm 
  • c trú cho Character special file (stored in /dev).
  • hệ thống là chủ sở hữu của tập tin
  • radio được nhóm

hệ thống và đài phát thanh đã đọc và ghi quyền (rw-, bit cây, int value 6), những người khác chỉ có quyền đọc (r, int value 4). Vì vậy, sự cho phép tập tin là 664. Nếu bạn có thể có được người dùng root (chạy su), bạn có thể thay đổi sự cho phép của tập tin này và viết vào nó một giá trị mới. Báo cáo lỗi đã được điền để yêu cầu Google cho phép các ứng dụng sửa đổi theo ngày lập trình trên thiết bị di động nhưng đã bị từ chối. Here tham chiếu

+1

ngoại tuyến đẹp. bạn cần phải nhổ tận gốc thiết bị để đạt được siêu người dùng acess. + 1 – Raghunandan

0

Ứng dụng người dùng thông thường không có quyền thay đổi thời gian thiết bị. Đọc câu trả lời bằng cashbash ở số following post để biết lựa chọn thay thế.

0

Thật không may, blackbelt là đúng; android cho phép chúng tôi làm rất nhiều điều thú vị, nhưng thay đổi thời gian hệ thống theo lập trình không phải là một trong số đó.

Vì tôi thấy rằng bạn đang tìm kiếm nguồn đáng tin cậy/chính thức hơn, tôi khuyên bạn nên kiểm tra this open ticket with Google, điều này cho thấy đây là vấn đề mở - nó phải hoạt động, nhưng không, và dường như không Google sẽ sửa chữa nó bất cứ lúc nào sớm. Ý chính của nó là mức độ bảo vệ SET_TIME được thiết lập cao hơn mức cần thiết. (để biết thêm thông tin về quyền hạn, hãy xem here)

Mặc dù điều này không hoàn toàn giống với việc thay đổi thời gian theo chương trình, bạn vẫn có thể thay đổi thời gian hệ thống cho bạn nếu vì lý do nào đó bạn cần thời gian hệ thống đã thay đổi. This thread sẽ giải thích cách thực hiện điều đó nếu bạn muốn đi tuyến đường đó.

Hy vọng đây là thông tin hữu ích!

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