我按照Android Developer document创建了通知
当顶部栏上显示通知时,我点击该通知,我的活动就会打开。在MyActivity的onCreate()中,我通过通知获取意图,并显示一个对话框。
public class MyActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get extras from intent from notification component
Bundle extras = getIntent().getExtras();
if(extras != null){
showDialog();
}
}
private void showDialog(){
...
//There is a "open" button on the dialog, which opens browswer
openButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//I dismiss the dialog
dismissDialog();
//Then I open the browser
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl));
startActivity(browserIntent);
}
});
}
}
在显示的对话框中有一个“打开”按钮,当点击该按钮时,浏览器就会打开。这里一切都很好。
如果现在按下物理后退按钮,浏览器将消失,MyActivity将再次显示。 然而,再次调用onCreate()
(有时),Bundle extras = getIntent().getExtras();
再次获得相同的意图,然后再次显示对话框。
如何确保浏览器为对话框打开后,按下物理后退按钮时,对话框不再显示?
答案 0 :(得分:0)
尝试这样:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl));
finish();
startActivity(browserIntent);
另一种方式是采用静态布尔变量/ prefrence:
static boolean isNotify=false;
Bundle extras = getIntent().getExtras();
if(extras != null)
{
isNotify= true;
}
将此代码放在onResume()方法中:
if(isNotify)
{
isNotify=false;
showDialog();
}