Подтвердить что ты не робот

Как установить время на устройство программно

Я создал одно приложение, которое заменяет текущее время показа времени сервера. Я много пробовал, но я не нашел решения. Как я могу установить его на свое устройство?

Я знаю, как получить время сервера на моем устройстве Android. Возможно ли это в режиме реального времени, особенно на Android?

  • Серверное время автоматически устанавливается на мое устройство в событии нажатия кнопки.
4b9b3361

Ответ 1

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

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

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

  • Если вы создаете приложение для широкого распространения (Google Play и т.д.), вы, вероятно, не должны. Это только вариант для пользователей root, и вы сможете установить его только вручную. Любая торговая площадка не будет устанавливать ее в нужное место.

  • Если вы создаете приложение для себя (или просто как учебное упражнение), пойдите для него. Однако вам понадобится укоренившийся телефон, так что сделайте это первым. Затем вы можете установить приложение прямо на /system/app/ с помощью ADB или файлового менеджера. Подробнее см. Статьи как это.


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

Ответ 2

Попробуйте следующее:

Вы можете использовать следующую команду:

adb shell date -s YYYYMMDD.HHmmss

Пример:

adb shell date -s 20120423.130000

устанавливает дату в Пн Апр 23 13:00:00 IST 2012

Или вы также можете попробовать следующее:

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

Надеюсь, что это поможет!

Ответ 3

Краткий ответ:

не может это сделать, если вы планируете использовать свое приложение в AppStore или обновите время до сервера.

Вам нужно SignatureOrSystem для изменения времени дата в соответствии с сервером.

Возможно, вам потребуется укрепить ваше устройство, а затем реализовать изменение.

Этот поток должен помочь вам, чтобы лучше понять его.

Ответ 4

Я делал то же самое в течение двух недель, теперь я получил решение с корневым устройством

  • Получить время сервера

<?php echo date("Ymd.His "); ?>