Программная проверка обновлений системы Android OTA
Если вы зайдете в Настройки-> О телефоне-> Проверить наличие обновлений, инициируется проверка, чтобы увидеть, готовы ли какие-либо обновления системы для вашего телефона.
Как я могу сделать это действие программно? Кроме того, я пытаюсь определить, где в исходном коде Android это происходит, чтобы я мог видеть его полностью и лучше понимать. У кого-нибудь есть предложения?
1 ответ
Насколько я знаю, не существует ни одной известной трансляции, намерения или API, чтобы сделать это программно.
И это зависит от ПЗУ и производителя.
Например, Sony использует сервис, который при активации Wi-Fi проверяет серверы Sony на наличие обновлений и сообщает об этом.
Но когда я говорю об источнике AOSP, я не думаю, что это произойдет.
Ближайшая точка обновления системы находится в packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java
Подсказка: grep строка "Обновление системы" внутри res/values
каталог и рабочие обратные слова и узнайте, где используется этот идентификатор строковой переменной!
Редактировать:
Вот пример приемника вещания:
public class SystemUpdateClass extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent){
if (intent.getAction().equals("android.settings.SYSTEM_UPDATE_SETTINGS")){
Toast.makeText(context,
"Yup! Received a system update broadcast",
Toast.LENGTH_SHORT).show();
}
}
}
Вот пример кода, из внутри деятельности onCreate
:
SystemUpdateClass sysUpdate = new SystemUpdateClass();
IntentFilter filter = new IntentFilter();
filter.addAction("android.settings.SYSTEM_UPDATE_SETTINGS");
registerReceiver(sysUpdate, filter);
Теперь, что должно произойти, ваше приложение должно получать трансляцию, если я не ошибаюсь, что трансляция предназначена только для приложений, подписанных системой... однако остальное оставлено в качестве упражнения:)