J'ai essayé 3 façons différentes
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
System.Environment.Exit(0);
public override void OnBackPressed()
{
Finish();
}
public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.Back)
{
System.Environment.Exit(0);
return true;
}
return base.OnKeyDown(keyCode, e);
}
Aucune de ces réponses ne semble fonctionner
Vous pouvez utiliser DepedencyService pour fermer une application lorsque vous appuyez sur le bouton de retour physique:
Dans votre interface utilisateur (PCL), procédez comme suit:
protected override bool OnBackButtonPressed()
{
if (Device.OS == TargetPlatform.Android)
DependencyService.Get<IAndroidMethods>().CloseApp();
return base.OnBackButtonPressed();
}
Créez également une interface (dans votre interface utilisateur PCL):
public interface IAndroidMethods
{
void CloseApp();
}
Maintenant, implémentez la logique spécifique à Android dans votre projet Android:
[Assembly: Xamarin.Forms.Dependency(typeof(AndroidMethods))]
namespace Your.Namespace
{
public class AndroidMethods : IAndroidMethods
{
public void CloseApp()
{
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
}
}
}
Si vous souhaitez quitter App sans tuer et revenir à l'écran d'accueil, faites-le si vous souhaitez le reprendre à partir de l'endroit où il a été fermé. vous pouvez faire la mise en œuvre comme suit dans votre activité associée.
public override void OnBackPressed()
{
Intent startMain = new Intent(Intent.ActionMain);
startMain.AddCategory(Intent.CategoryHome);
startMain.SetFlags(ActivityFlags.NewTask);
StartActivity(startMain);
}
J'espère que cela t'aides.
J'ai essayé ce code, ça marche de mon côté. J'espère que ce code vous aide.
protected override bool OnBackButtonPressed()
{
Device.BeginInvokeOnMainThread(async () =>
{
var result = await DisplayAlert("Alert!", "Do you really want to exit the application?", "Yes", "No");
if (result)
{
if (Device.OS == TargetPlatform.Android)
{
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
}
}
});
return true;
}
Finish();
Travaillé pour moi Exécuté à partir de l'activité principale.
Essayez ceci dans votre activité:
this.FinishAffinity();
Bonne chance!!
public override void OnBackPressed()
{
Finish();
Android.OS.Process.KillProcess (Android.OS.Process.MyPid ());
}
Vous pouvez également demander à l'utilisateur de confirmer la sortie de l'application:
public override void OnBackPressed()
{
RunOnUiThread(
async () =>
{
var isCloseApp = await AlertAsync(this, "NameOfApp", "Do you want to close this app?", "Yes", "No");
if (isCloseApp)
{
var activity = (Activity)Forms.Context;
activity.FinishAffinity();
}
});
}
public Task<bool> AlertAsync(Context context, string title, string message, string positiveButton, string negativeButton)
{
var tcs = new TaskCompletionSource<bool>();
using (var db = new AlertDialog.Builder(context))
{
db.SetTitle(title);
db.SetMessage(message);
db.SetPositiveButton(positiveButton, (sender, args) => { tcs.TrySetResult(true); });
db.SetNegativeButton(negativeButton, (sender, args) => { tcs.TrySetResult(false); });
db.Show();
}
return tcs.Task;
}