2012-02-24 40 views
14

Tôi cần đặt ngày/giờ từ Android theo lập trình, nhưng tôi không thành công! Tôi có ba nguồn trên:Đặt ngày/giờ của Android theo lập trình

Source code 1

AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarm.setTime(1330082817000); 

AndroidManifest:

<uses-permission android:name="android.permission.SET_TIME" /> 
<uses-permission android:name="android.permission.SET_TIME_ZONE" /> 

Ngoại lệ:

Service fatal error : Unable to start activity ComponentInfo{br.com.tdta.service/br.com.tdta.service.Service}: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME. 
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.tdta.service/br.com.tdta.service.Service}: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME. 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
    at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:4627) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME. 
    at android.os.Parcel.readException(Parcel.java:1247) 
    at android.os.Parcel.readException(Parcel.java:1235) 
    at android.app.IAlarmManager$Stub$Proxy.setTime(IAlarmManager.java:237) 
    at android.app.AlarmManager.setTime(AlarmManager.java:289) 
    at br.com.tdta.service.Service.onCreate(Service.java:32) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
... 11 more 

====

Source code 2

boolean itsWork = SystemClock.setCurrentTimeMillis(1330082817000); 
System.out.println(itsWork); 

Manifest:

<uses-permission android:name="android.permission.SET_TIME" /> 
<uses-permission android:name="android.permission.SET_TIME_ZONE" /> 

itsWork giá trị:

false 

====

Source code 3

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd.hhmmss"); 
String data = format.format(new Date(1330082817000)); 
try { 
    Runtime.getRuntime().exec("date -s " + data); 
} catch (IOException e) { 
} 

Tôi đang làm gì sai?

Cảm ơn trước!

+0

Nó sẽ chỉ hoạt động trên điện thoại gốc. Và một followup ở đây http://stackoverflow.com/questions/6584772/is-possible-to-set-system-datetime-from-my-android-app –

+0

[answer] này (http://stackoverflow.com/a/8752130/1833118) hoạt động trên điện thoại của tôi. – hengxin

Trả lời

12

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

Sao chép vào đây để tham khảo nhanh:

Theo this thread, ứng dụng người dùng không thể đặt thời gian, bất kể các điều khoản, chúng tôi cung cấp cho nó. Thay vào đó, cách tiếp cận tốt nhất là làm cho người dùng đặt thời gian theo cách thủ công. Chúng tôi sẽ sử dụng:

startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS)); 

Thật không may, không có cách nào liên kết trực tiếp với cài đặt thời gian (sẽ giúp họ tiết kiệm thêm một lần nhấp). Bằng cách sử dụng ellapsedRealtime, chúng tôi có thể đảm bảo rằng người dùng đặt thời gian chính xác.

+1

cảm ơn! Tôi đã giải quyết bằng cách sử dụng điều này: 'startActivity (new Intent (android.provider.Settings.ACTION_DATE_SETTINGS));' – eliangela

+2

Cập nhật trễ, nhưng có lẽ bạn nên kiểm tra thay vì anser bởi tôi trong chuỗi câu hỏi được tham chiếu. Nó không phải là một vấn đề lớn miễn là bạn có thể nhận được sự cho phép SET_TIME. – jek

+0

Làm thế nào để có được thời gian và ngày os android đã thiết lập trong cài đặt Android? Ngày tháng() có trả lại chúng không? –

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