所以我有一个服务,它启动一个显示为Popup的活动感谢“android:style / Theme.Dialog”
此活动显示Listview,其中包含应用程序列表。 在列表视图的每个元素上,都有一个应用程序的简短描述和两个按钮。 1用于启动应用程序 2用于显示具有更多信息的吐司。
以下是我服务中的代码:它启动活动
Intent intent = new Intent(this, PopUpActivity.class);
intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
此活动使用带有listview的自定义布局,并使用自定义ArrayAdapter
进行调整在这个自适应器中,我已经在开始按钮上执行操作以启动当前应用程序
Button lanceur = (Button) v.findViewById(R.id.Buttonlancer);
lanceur.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
p.start(mcontext);
}
});
使用p.start,我启动了应用程序。
但是现在,如果我从应用程序中“退回”,我会回到弹出窗口...我可以启动另一个应用程序。我不希望它成为可能。
这就是为什么我希望我可以解雇/破坏/完成我的PopupActivity,但我无法用我的代码来完成它。
答案 0 :(得分:3)
可以使用startActivityForResult()
和onActivityResult()
Intent intent = new Intent(this, PopUpActivity.class);
intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivityForResult(intent,1);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("CheckStartActivity","onActivityResult and resultCode = "+resultCode);
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
this.finish();
}
并添加AndroidManifest.xml:
<activity android:name=".PopUpActivity" android:noHistory="true" />
答案 1 :(得分:0)
在为下一个finish()
致电Activity
后,只需在显示为弹出窗口的start
内拨打Activity
。
答案 2 :(得分:0)
像这样更改你的luanch代码:
Button lanceur = (Button) v.findViewById(R.id.Buttonlancer);
lanceur.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
p.start(mcontext);
finish();
}
});
另外你可能不需要在你的服务中调用getApplicationContext()你可以粘贴更多的代码吗?您应该可以使用NameOfYourService.this.startActivity();
,或者甚至只使用startActivity();
,具体取决于您的结构。
另请注意,Developer Docs根据 非常糟糕的主意 ,您可以直接从服务启动活动。请参阅此问题,原因如下:Why service should not start activity?