Android ::如何退出完整的应用程序,在对话框按钮上单击

时间:2015-07-08 12:27:27

标签: android android-intent android-activity

我使用下面的代码退出应用程序。

案例是,如果互联网不可用,则会显示对话框,提示互联网不可用,然后按确定。一旦用户按下确定,它就会关闭应用程序,但应用程序仍显示在最近的应用程序列表中。

以下是代码::

 AlertDialog.Builder builder1 = new AlertDialog.Builder(context);
        builder1.setTitle("Oops! Internet not available.");
        builder1.setMessage("Connect to Internet and Restart App.");
        builder1.setCancelable(true);
        builder1.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                Intent intent = new Intent(Intent.ACTION_MAIN); 
             intent.addCategory( Intent.CATEGORY_HOME );
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        startActivity(intent);

            }
        });

        AlertDialog alert11 = builder1.create();
        alert11.show();

使用上面的代码后,它仍显示在最近的应用列表中。

我已经尝试了下面的事情。

  

System.exit(0);

     

结束();

     

intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

请告诉我如何从最近的应用列表中删除该应用。

2 个答案:

答案 0 :(得分:2)

我想有很多方法可以从历史记录列表中删除最新的应用。

通过活动经理:

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
  if(am != null) {
     List<ActivityManager.AppTask> tasks = am.getAppTasks();
     if (tasks != null) {
         tasks.get(0).finishAndRemoveTask();
     }
  }

通过manifesto.xml

<activity android:name=".Activity2" android:excludeFromRecents="true"></activity>

或通过意图

Intent intent = new Intent(Main.this, NewActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);

答案 1 :(得分:0)

您还可以在MainActivity中执行以下操作:

@Override
public void finish(){

    if(android.os.Build.VERSION.SDK_INT >= 21){

        finishAndRemoveTask();

    }
    else{

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        startActivity(intent)

    }

}