PDA

View Full Version : خروج از اپلیکیشن آندروید



majid_7
دوشنبه 24 فروردین 1394, 21:44 عصر
با سلام خدمت تمامی دوستان و برنامه نویسان محترم
از اونجا که کلی گشتم توی سایت و تاپیک مرتبطی با این موضوع پیدا نکردم تصمیم گرفتم که یک تاپیک با این موضوع ایجاد کنم!
برای خروج از اپلیکیشن آندروید تون توی سایتهای مختلف کلی چیزهای مختلف نوشته شده بود که واسه من هیچ کدوم کار نکرد!!!
مثل دستورات زیر

MainActivity.this.finish()

android.os.Process.killProcess(android.os.Process. myPid());


که این دومی توی متد onDestroy نوشته میشد!

و کلی دستور دیگه که هیچ کدوم واسه من کار نکرد و اما بالاخره این دستور رو پیدا کردم که فعلا جوابگو بوده
توی سایتش نوشته بود که برای انجام این کار (عمل خروج از اپلیکیشن) دستور خاصی وجود نداره مگر اینکه بوسیله خود سیستم عامل این کار رو انجام بدیم
با استفاده از این دستور



Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);


این دستور رو میتونید توی متد onBackPressed بنویسید .

اینم کد کاملش امیدوارم که بدردتون خورده باشه(تشکر فراموش نشه! :چشمک:)



@Override
public void onBackPressed() {
AlertDialog.Builder Dialog = new AlertDialog.Builder(MainActivity.this);
Dialog.setMessage("آیا واقعا قصد خروج دارید؟");
Dialog.setTitle("خروج");
Dialog.setCancelable(false);
Dialog.setPositiveButton("بله", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast toast = Toast.makeText(getApplicationContext(),
"در پناه حق باشید", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});

Dialog.setNegativeButton("خیر", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

}
});
AlertDialog alert = Dialog.create();
alert.show();
}

Ebrahimkh
دوشنبه 24 فروردین 1394, 22:02 عصر
سلام دوست عزیز اینجوری هم میشه

این کد رو در Listener دکمه Exit می نویسیم



Button Exit = (Button)findViewById(R.id.exit);
Exit.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
}
});


بعد از اینکه کد بالا را در Listener دکمه Exit نوشتیم به Activity اصلی برنامه میرویم
وبعد از onCreate این تیکه کد را می نویسیم



if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}



موفق باشید./

majid_7
سه شنبه 25 فروردین 1394, 09:32 صبح
سلام دوست عزیز اینجوری هم میشه

این کد رو در Listener دکمه Exit می نویسیم



Button Exit = (Button)findViewById(R.id.exit);
Exit.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
}
});


بعد از اینکه کد بالا را در Listener دکمه Exit نوشتیم به Activity اصلی برنامه میرویم
وبعد از onCreate این تیکه کد را می نویسیم



if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}



موفق باشید./

بله ، درسته
متشکرم از پاسخ تون

EDRIS0131
سه شنبه 25 فروردین 1394, 10:06 صبح
به نظر من بهتره دکمه خروج رو تو منو بذاری
چون گذاشتن button تو برنامه باعث میشه یه بخشی از فضای برنامت گرفته بشه و جالب نیست
اگه تو منو بذاری جالبتره
(نظر شخصیه)

Ebrahimkh
سه شنبه 25 فروردین 1394, 10:56 صبح
سلام
دوست عزیز شما می توانید همین سورس رو بجای قرار دادن در listener دکمه در منوی مورد نظر قرار دهید

هدف این تاپیک سورس Exit بوده و بس./

با تشکر از شما

majid_7
سه شنبه 25 فروردین 1394, 14:51 عصر
سلام
دوست عزیز شما می توانید همین سورس رو بجای قرار دادن در listener دکمه در منوی مورد نظر قرار دهید

هدف این تاپیک سورس Exit بوده و بس./

با تشکر از شما

ممنون از پاسخگویی و مشاوره تون
اما به نظر من خیلی ها از منوها استفاده نمیکنند موقع استفاده از اپلیکیشن
یکیش خود من! :لبخند:
بخوام از برنامه خارج بشم فقط از دکمه ی Back استفاده می کنم!
بعدش توسط خود سیستم عامل می بندمش

Sir-Programmer
چهارشنبه 10 تیر 1394, 05:00 صبح
من هر کاری میکنم برنامه کامل خارج نمیشه دوستان خواهشاً کمک کنید

tux-world
چهارشنبه 10 تیر 1394, 10:56 صبح
شما خروج از اندروید رو با خروج از حساب کاربری اشتباه گرفتید این چیزی که شما دنبالش بودید هزاران هزار بار تو اینترنت مطرح شده و جواب داده شده. خروج از حساب کاربری یه نرم افزار بدین شکل هستش. تو اندروید برای خروج دو بار back رو میزنن نه اینکه دیالوگ نشون بدن. اندروید با بقیه نرم افزار ها تو حالاتی متفاوته که این یکیشه.


من هر کاری میکنم برنامه کامل خارج نمیشه دوستان خواهشاً کمک کنید

super.onBackPressed();
رو فقط داخل متد خروج بنویسید.
در کل راه اشتباهی هستش این چیزی که دوستمون نوشتن :لبخندساده:

majid_7
چهارشنبه 10 تیر 1394, 18:20 عصر
ممنون از راهنمایی تون اما منظورتون رو متوجه نشدم! :متفکر:
میشه بیشتر توضیح بدید
خروج از اپلیکیشن با خروج از حساب کاربری چه تفاوتی داره؟
پس چجوریه که همه ی یا بهتر بگم اکثر اپلیکیشن ها اینطوری خروج رو انجام میدن!؟
این کدی که شما گذاشتید رو بذاریم توی متد onDestroy حله ، یا متد Exit() خودمون؟؟

tux-world
پنج شنبه 11 تیر 1394, 02:53 صبح
خروج از حساب کاربری یعنی چیزی مثل بازار که شما لاگین میکنید. خروج ار اپلیکیشن یعنی دوبار back رو بزنید و برنامه بسته بشه.


@Override public void onBackPressed() {
AlertDialog.Builder Dialog = new AlertDialog.Builder(MainActivity.this);
Dialog.setMessage("آیا واقعا قصد خروج دارید؟");
Dialog.setTitle("خروج");
Dialog.setCancelable(false);
Dialog.setPositiveButton("بله", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast toast = Toast.makeText(getApplicationContext(),
"در پناه حق باشید", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
super.onBackPressed();
}
});

Dialog.setNegativeButton("خیر", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

}
});
AlertDialog alert = Dialog.create();
alert.show();
}





ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــــ
مهندس مهدی پیشگوی

majid_7
پنج شنبه 11 تیر 1394, 10:09 صبح
خب!
پس تنها راه حل برای خروج از اپلیکیشن همون روشی که شما گفتید هست؟


private static final int TIME_INTERVAL = 2000; // # milliseconds, desired time passed between two back presses.
private long mBackPressed;

@Override
public void onBackPressed()
{
if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis())
{
super.onBackPressed();
return;
}
else { Toast.makeText(getBaseContext(), "Tap back button in order to exit", Toast.LENGTH_SHORT).show(); }

mBackPressed = System.currentTimeMillis();
}


درسته؟

tux-world
پنج شنبه 11 تیر 1394, 13:27 عصر
return دیگه چرا؟

majid_7
پنج شنبه 11 تیر 1394, 19:56 عصر
یعنی فقط return مشکله!!
بقیه ش OK یه؟؟؟
(کد رو از StackoverFlow برداشتم)

softwareEngin
جمعه 26 شهریور 1395, 14:18 عصر
ممنون بابت این پستتون(اولین پست این تایپک)من خیلی از روش ها رو اامتحان کردم هم با buttonی برای خروج هم با استفاده از دکمه بک.داخل روش هام روش های گفته شده در تایپک های بعدی هم بودن اما از اونا جواب نگرفتم استفاده از این دو متد finish(); System.exit(0); اصلا جواب نمیده چون برای خروج از اکتیویتی هست نه اپلیکیشن.این روش پایین هم جواب نمیده و موقعی که از یه اکتیویتی مثلا با یه باتنی به اکتیویتی اول میام و دکمه بک رو میزنم به همون اکتیویتی قبل که باتن داخلش بوده برمیگرده btnexit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intentExit=new Intent(getApplicationContext(),MainActivity.class) ; intentExit.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP ); intentExit.putExtra("EXIT",true); startActivity(intentExit); } });و در ادامه اش این: if (getIntent().getBooleanExtra("EXIT",false)){ finish(); }با onDerstroy هم فایده نداشت و تنها با این پست جواب گرفتم البته بستگی به قابلیتی هم که برنامه نویس میخاد دارهبازم ممنون