xamarin в Xamarin Обновление: < /strong>
перезагрузка происходит, как и ожидалось после обновления от Сборка Xamarin для новой сборки Xamarin. к новой сборке Maui. < /p>
xamarin to maui update: < /strong>
Хотя APK успешно установлен, автоматическая перезагрузка не происходит Полем Требуется ручный цикл питания (сброс питания), и только тогда новое приложение Maui запускается правильно. При обновлении от Xamarin до maui?
Соответствующий код Xamarin:
перезагрузчик: < /strong> < /h3>
Код: Выделить всё
public class RebootReceiver : BroadcastReceiver
{
public override void OnReceive(Context? context, Intent? intent)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "su";
process.StartInfo.Arguments = "-c reboot";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.WaitForExit();
}
}
Код: Выделить всё
var attempt = await RunCommand($"su -c pm install --dont-kill -r {pathToApk}");
if (attempt.Succeeded)
{
Log.Information("Installed android update successfully. Requesting app restart...");
MessagingCenter.Send(this, "RebootSystem");
}
Код: Выделить всё
protected override void OnCreate(Bundle savedInstanceState) {
RebootIntent = PendingIntent.GetBroadcast(this, 0, new Intent(this, typeof(RebootReceiver)), PendingIntentFlags.UpdateCurrent);
AlarmManager = (AlarmManager)this.GetSystemService(AlarmService);
...
MessagingCenter.Subscribe(this, "RebootSystem", (sender) =>
{
_logger.LogInformation("Received event from CheckUpdateService to reboot System!");
ScheduleReboot(60);
});
...
}
private void ScheduleReboot(int seconds)
{
long triggerAtMillis = SystemClock.ElapsedRealtime() + seconds * 1000;
AlarmManager.Set(AlarmType.ElapsedRealtimeWakeup, triggerAtMillis, RebootIntent);
_logger.LogInformation("Starting timer to reboot system... in {seconds}s", seconds);
}
RebootReceiver:
Код: Выделить всё
public class RebootReceiver : BroadcastReceiver
{
public override void OnReceive(Context? context, Intent? intent)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "su";
process.StartInfo.Arguments = "-c reboot";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.WaitForExit();
}
}
Код: Выделить всё
var attempt = await RunCommand($"su -c pm install --dont-kill -r {pathToApk}");
if (attempt.Succeeded)
{
Log.Information("Installed android update successfully. Requesting app restart...");
WeakReferenceMessenger.Default.Send(this, "RebootSystem");
}
Код: Выделить всё
private PendingIntent RebootIntent;
private AlarmManager AlarmManager;
protected override void OnCreate(Bundle? savedInstanceState) {
RebootIntent = PendingIntent.GetBroadcast(this, 0, new Intent(this, typeof(RebootReceiver)), PendingIntentFlags.UpdateCurrent);
AlarmManager = (AlarmManager)GetSystemService(AlarmService);
...
WeakReferenceMessenger.Default.Register(this, "RebootSystem", (obj, sender) =>
{
_logger.LogInformation("Received event from CheckUpdateService to reboot Sytem!");
ScheduleReboot(60);
});
...
}
private void ScheduleReboot(int seconds)
{
long triggerAtMillis = SystemClock.ElapsedRealtime() + seconds * 1000;
AlarmManager.Set(AlarmType.ElapsedRealtimeWakeup, triggerAtMillis, RebootIntent);
_logger.LogInformation("Starting timer to reboot system... in {seconds}s", seconds);
}
< /code>
Я стараюсь начать перезагрузку также без Alammanager, но также не работает.
RebootIntent.Send();Я также пытаюсь с предварительными сборами приложения Xamarin, чтобы я мог исключить ошибки в текущей версии
Подробнее здесь: https://stackoverflow.com/questions/794 ... ted-device