【问题标题】:How to hide activity called from service android如何隐藏从服务android调用的活动
【发布时间】:2011-12-16 01:14:29
【问题描述】:

我有一项服务有时会调用显示警报对话框的活动。当单击确定按钮时,我想转到屏幕上之前我的应用程序的活动,或者,如果我的应用程序不在前面,请来回到用户显示的窗口..这是我的警报对话框

public class ActivityNotification extends Activity{
private String client,notifica;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    client = getIntent().getStringExtra("client");
    notifica = getIntent().getStringExtra("notifica");

    final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Notifica da "+client);
    alertDialog.setMessage(notifica);
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            alertDialog.cancel();
        }
    });
    alertDialog.setIcon(R.drawable.icon);
    alertDialog.show();
}
}

这就是我从服务中调用此活动的方式

Notification notification = new Notification(R.drawable.icon, "Notifica da "+client, 10000);
    notification.flags |=Notification.FLAG_AUTO_CANCEL;
    CharSequence contentTitle = "Notifica da "+client;
    CharSequence contentText = notifica;
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.defaults |= Notification.DEFAULT_VIBRATE;
    //Intent notificationIntent = new Intent(this,ActivityNotification.class);
    Intent notificationIntent = new Intent();
    notificationIntent.setClassName("package", "package.ActivityNotification");
    notificationIntent.putExtra("client",client);
    notificationIntent.putExtra("notifica",notifica);
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,0);
    notification.setLatestEventInfo(this, contentTitle, contentText, contentIntent);
    mManager.notify(id, notification);

我能做什么?你能帮帮我吗?

【问题讨论】:

    标签: android android-activity android-alertdialog android-service


    【解决方案1】:

    听起来您需要恢复手机上当前应用程序的历史堆栈。 ActivityManager 可以帮助您。

    参考:

    http://developer.android.com/reference/android/app/ActivityManager.html

    【讨论】:

    • 没错!但是正如 LuxuryMode 所说,如果可能的话,你应该真正模块化你的代码,这会让它更容易使用!
    【解决方案2】:

    您似乎有很多事情要做,只是为了从服务中启动一项活动。为什么你不能这样做:

    Intent intent = new Intent(getBaseContext(), SomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    getApplication().startActivity(intent);
    

    ?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多