Tôi hiện đang cố gắng đặt thời gian hệ thống Android bằng phần mềm. Vâng, tôi biết rằng nhiều người đã thử nó - và thất bại như tôi làm bây giờ. :-)Cài đặt thời gian hệ thống của điện thoại ROOTED
Nhưng tôi cũng biết rằng có thể đặt thời gian hệ thống Android trên điện thoại ROOTED. Tôi có testet một ứng dụng gọi là ClockSync mà exaclty đó.
Vì vậy, những gì tôi muốn là tìm hiểu cách đặt thời gian hệ thống trên các thiết bị ROOTED. Xin đừng nói rằng điều đó là không thể. :-)
gì tôi đã cố gắng cho đến nay là thiết lập các điều khoản sau đây:
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>
<uses-permission android:name="android.permission.SET_TIME"/>
Và sau đó trong mã của tôi:
AlarmManager a = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
long current_time_millies = System.currentTimeMillis();
try {
a.setTime((long)current_time_millies+10000);
} catch (Exception e) {
// Why is this exception thrown?
}
Nhưng tôi luôn luôn nhận được ngoại lệ sau đây:
java.lang.SecurityException: setTime: Cả người dùng 10054 lẫn quy trình hiện tại đều không có android.permission.SET_TIME.
Tôi đang thử nghiệm trên cùng một thiết bị mà ClockSync hoạt động hoàn hảo. Vậy - tôi đang làm gì sai? Hoặc tốt hơn: Bạn có thể cung cấp mã thử nghiệm hoạt động không?
Tôi đã có/dev/báo động thiết lập với 666 và đang kêu gọi setCurrentTimeMillis, nhưng nó luôn luôn trả về false – TimothyP
@TimothyP nó có thể xảy ra trên các firmware mới nhất của Samsung với KNOX (SELinux) được bật. Cách duy nhất để khắc phục nó là sử dụng cuộc gọi dòng lệnh 'date' như được đề xuất bởi @Karan. Lệnh 'date' không hỗ trợ mili giây, vì vậy tôi khuyên bạn nên căn chỉnh lệnh gọi với lần bắt đầu thứ hai bằng bộ đếm thời gian dựa trên thời gian nguyên tử. – CrazyCoder
Tôi hiểu rồi, ngay bây giờ tôi đang gặp vấn đề trên bàn điều khiển, tôi sẽ hỏi các kỹ sư nếu họ đã làm gì đó để chặn nó. Trong khi đó tôi sẽ làm theo đề nghị của bạn thnx – TimothyP