簡體   English   中英

如何為Android植根設備設置時區?

[英]How to set time zone for android rooted device?

我有一個扎根的android設備,我想從我的應用程序更改設備的默認時間,日期和時區。 更改時間和日期非常容易,但是如何更改設備的時區?

您需要android.permission.SET_TIME 之后,通過Context.getSystemService(Context.ALARM_SERVICE)及其方法setTime()使用AlarmManager。

通過活動或服務將時間設置為2010/1/1 12:00:00的代碼段:

Calendar c = Calendar.getInstance();
c.set(2010, 1, 1, 12, 00, 00);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setTime(c.getTimeInMillis());

如果您要更改時區,則方法應該非常相似(請參見android.permission.SET_TIME_ZONE和setTimeZone

此鏈接中的更多信息以及

如果您具有正確的權限(請參閱下文),則可以使用AlarmManager進行此操作。 例如,要將時間設置為2013/08/15 12:34:56,您可以執行以下操作:

Calendar c = Calendar.getInstance();
c.set(2013, 8, 15, 12, 34, 56);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setTime(c.getTimeInMillis());

您需要權限SET_TIME才能執行此操作。 不幸的是,這是一個signatureOrSystem權限。

AndroidManifest.xml中的定義:

<!-- Allows applications to set the system time -->
<permission android:name="android.permission.SET_TIME"
    android:protectionLevel="signature|system"
    android:label="@string/permlab_setTime"
    android:description="@string/permdesc_setTime" />

可以使用此權限的唯一應用是:

  • 用系統映像簽名
  • 安裝到/ system /文件夾

除非您構建自定義ROM,否則第一個運氣不佳。

第二,這取決於您在做什么。

  • 如果您要構建用於廣泛分發的應用(Play商店等),則可能不應該這樣做。 它僅是root用戶的選項,只能手動安裝。 任何市場都不會將其安裝到正確的位置。
  • 如果您要為自己構建一個應用程序(或只是作為學習練習),那就去做吧。 不過,您將需要有根電話,因此首先需要這樣做。 然后,您可以使用adb或文件管理器將應用程序直接安裝到/ system / app /。 有關更多詳細信息,請參見類似的文章。

最后一點:在Android 2.2(API 8)中添加了SET_TIME權限和AlarmManager#setTime()。 如果您嘗試在以前的版本上執行此操作,則不確定它是否可以正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM