Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android的广播接收器中使用警报对话框?_Android_Sms_Broadcastreceiver - Fatal编程技术网

如何在android的广播接收器中使用警报对话框?

如何在android的广播接收器中使用警报对话框?,android,sms,broadcastreceiver,Android,Sms,Broadcastreceiver,因此,我有一个广播接收器,它可以监听传入的短信,并在短信中搜索特定的词。我在清单中实现了接收者,并在与我的活动不同的类中实现了接收者 *编辑: 根据SMS是否包含特定术语,我需要弹出一个对话框,在该对话框中,用户可以选择访问特定网站或不访问特定网站 如果我用另一种语言做这件事,我只需要一个接收者修改的全局变量,然后另一种方法会检查它的值,以确定它是否需要执行某些操作,但我不能在android中这样做。我不确定你的标题和问题是否匹配,但是,如果你想在浏览器中打开一个网站,只需在你的广播接收器中发出

因此,我有一个广播接收器,它可以监听传入的短信,并在短信中搜索特定的词。我在清单中实现了接收者,并在与我的活动不同的类中实现了接收者

*编辑: 根据SMS是否包含特定术语,我需要弹出一个对话框,在该对话框中,用户可以选择访问特定网站或不访问特定网站


如果我用另一种语言做这件事,我只需要一个接收者修改的全局变量,然后另一种方法会检查它的值,以确定它是否需要执行某些操作,但我不能在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你是怎么做到的?你能告诉我吗?你有这方面的样品或资源吗?我一直在寻找这样的东西来学习如何做了几天,但仍然没有找到任何实际的工作。