2013-12-25 2 views
0

У меня есть встроенное устройство для Android, и я хочу изменить время, дату и часовой пояс моего устройства в своем приложении. Изменение времени и даты довольно просто, но как я могу изменить часовой пояс моего устройства?Как установить часовую зону для укороченного устройства Android?

ответ

0

Если у вас есть правильное разрешение (см ниже), вы можете сделать это с 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" /> 

Единственные приложения, которые могут использовать это разрешение являются:

  • Подписано образ системы
  • установлен в/системы/папки

Если вы не создаете пользовательские ПЗУ, вам не повезло с первым.

Во-вторых, это зависит от того, что вы делаете.

  • Если вы создаете приложение для широкого распространения (Play Store и т. Д.), Вы, возможно, не должны. Это только вариант для пользователей root, и можно установить только вручную. Любая торговая площадка не будет устанавливать его на правильное местоположение .
  • Если вы создаете приложение для себя (или как упражнение ), идите за ним. Однако вам понадобится проложенный телефон, так что сначала сделайте это . Затем вы можете установить приложение прямо в/system/app/ с помощью adb или файлового менеджера. См. Статьи, подобные этому, для более подробной информации.

Последнее примечание: разрешение SET_TIME и AlarmManager # setTime() были добавлены в Android 2.2 (API 8). Если вы пытаетесь сделать это в предыдущей версии, я не уверен, что она будет работать вообще.

0

Необходимо android.permission.SET_TIME. После этого используйте AlarmManager через Context.getSystemService (Context.ALARM_SERVICE) и его метод setTime().

Сниппает для установки времени в 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()); 

Если для изменения часового пояса, подход должен быть очень похож (см андроида .permission.SET_TIME_ZONE и setTimeZone)

более

информация в this link и this

+0

Я не пробовал это, но разве это просто не задает часовой пояс для этого единственного объекта SimpleDateFormat, а не всего устройства ...? –

+0

Да, вы правы, см. Мой раздел –

Смежные вопросы