如何在android的广播接收器中使用警报对话框?
因此,我有一个广播接收器,它可以监听传入的短信,并在短信中搜索特定的词。我在清单中实现了接收者,并在与我的活动不同的类中实现了接收者 *编辑: 根据SMS是否包含特定术语,我需要弹出一个对话框,在该对话框中,用户可以选择访问特定网站或不访问特定网站如何在android的广播接收器中使用警报对话框?,android,sms,broadcastreceiver,Android,Sms,Broadcastreceiver,因此,我有一个广播接收器,它可以监听传入的短信,并在短信中搜索特定的词。我在清单中实现了接收者,并在与我的活动不同的类中实现了接收者 *编辑: 根据SMS是否包含特定术语,我需要弹出一个对话框,在该对话框中,用户可以选择访问特定网站或不访问特定网站 如果我用另一种语言做这件事,我只需要一个接收者修改的全局变量,然后另一种方法会检查它的值,以确定它是否需要执行某些操作,但我不能在android中这样做。我不确定你的标题和问题是否匹配,但是,如果你想在浏览器中打开一个网站,只需在你的广播接收器中发出
如果我用另一种语言做这件事,我只需要一个接收者修改的全局变量,然后另一种方法会检查它的值,以确定它是否需要执行某些操作,但我不能在android中这样做。我不确定你的标题和问题是否匹配,但是,如果你想在浏览器中打开一个网站,只需在你的广播接收器中发出一个意图 如果您想要一个显式的AlertDialog,请参阅以获取一些详细信息:您必须使用意图并使用新任务标志集启动活动 编辑:您可以这样做:
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, {CLASSNAME}.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
您希望警报对话框显示为在所有内容的顶部打开。使用意图在完全清晰/透明的背景下启动新活动。此技术使警报对话框看起来像它在桌面上的一样,并在后台显示图标;-) 如果他们允许,那么任何应用程序都可能阻塞屏幕,并可能给其他应用程序带来问题。这就是为什么我认为,安卓系统并没有给我们杠杆,让我们为广播公司使用警报窗口。我可能错了,但我测试过一次,但那次不起作用
或者,如果您想在OnReceive中收到响应后打开警报对话框,则可以使用TOAST,然后在OnReceive中添加以下代码,单击通知后,我将在此处发出警报对话框。
Intent intent = new Intent(mainContext,HomeActivity.class).putExtra("fromNotificationClick",true);
PendingIntent pIntent = PendingIntent.getActivity(mainContext, (int) System.currentTimeMillis(), intent, 0);
public void alert() {
new AlertDialog.Builder(HomeActivity.this).setIcon(R.drawable.help).setTitle("Alert")
.setMessage("Are you sure....")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getBaseContext(), "Coming to help", Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("No", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getBaseContext(), "NO...", Toast.LENGTH_SHORT).show();
}
}).show();
}
然后在您的家庭活动中,在onCreate中添加以下代码,
boolean fromNotificationClick=false;
Bundle extras=getIntent().getExtras();
if(null!=extras)
fromNotificationClick=extras.getBoolean("fromNotificationClick");
if(fromNotificationClick){ alert(); }
最后为警报方法添加代码。
Intent intent = new Intent(mainContext,HomeActivity.class).putExtra("fromNotificationClick",true);
PendingIntent pIntent = PendingIntent.getActivity(mainContext, (int) System.currentTimeMillis(), intent, 0);
public void alert() {
new AlertDialog.Builder(HomeActivity.this).setIcon(R.drawable.help).setTitle("Alert")
.setMessage("Are you sure....")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getBaseContext(), "Coming to help", Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("No", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getBaseContext(), "NO...", Toast.LENGTH_SHORT).show();
}
}).show();
}
所以我必须启动一个新的活动来处理警报对话框?我想这就是你说的。我编辑我的问题是为了更好地反映我想做的事情。如果它只是一个浏览器或不是,你可能只想使用一个意图(就像Google Talk客户端对链接所做的那样):我相信你可以在没有活动的情况下启动。如果你想做更复杂的事情,那么是的,你需要启动一个活动来处理它。它只是一个浏览器,但它的想法是接收者检查传入的文本消息,如果发现关键字,比如CNN,那么它需要弹出一个警报对话框,询问用户是否想访问CNN.com网站。我找到了答案。我最终使用了你在回答中建议的意图方法。谢谢。嘿@ihtkwot你是怎么做到的?你能告诉我吗?你有这方面的样品或资源吗?我一直在寻找这样的东西来学习如何做了几天,但仍然没有找到任何实际的工作。