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

时间:2011-05-30 03:41:12

标签: android sms broadcastreceiver

所以我有一个广播接收器,可以收听传入的短信,并在短信中搜索特定的条款。我在清单中实现了接收器,并在与我的活动分开的类中实现了接收器。

*编辑:* 根据SMS是否包含特定术语,我需要弹出一个对话框,在该对话框中,将向用户显示转到特定网站或不转到特定网站的选项。

如果我用另一种语言做这个,我只会有一个接收器修改的全局变量,然后另一个方法将检查它的值以确定它是否需要执行某些东西,但我不能这样做在android。

4 个答案:

答案 0 :(得分:2)

我不确定你的标题和你的问题是否匹配,但如果你想要的是在浏览器中打开一个网站,只需从你的BroadcastReceiver中激活一个Intent。

如果你想要一个明确的AlertDialog,那么请参阅AlertDialog from within BroadcastReceiver?? Can it be done?了解一些细节:你必须使用Intent并在设置新任务标志的情况下启动一个Activity。

编辑:你会做这样的事情:

public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, {CLASSNAME}.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);   
    }

答案 1 :(得分:1)

如果他们允许,那么任何应用程序都可以阻止屏幕,并可能给其他应用程序带来问题。这就是为什么我认为,Android没有给我们利用警报窗口为广播公司。我可能错了,但我测试了一次,但那段时间没用。

替代方案,您可以使用 TOAST

答案 2 :(得分:0)

您希望警报对话框显示为在所有内容之上打开。使用intent以完全清晰/透视背景启动新活动。此技术使警报对话框显示在桌面顶部,并在后台显示图标; - )

答案 3 :(得分:0)

如果你想在onRecieve收到回复后打开警告对话框,然后在OnRecieve中添加以下代码,这里我点击通知后会提示对话。

Intent intent = new Intent(mainContext,HomeActivity.class).putExtra("fromNotificationClick",true); 

PendingIntent pIntent = PendingIntent.getActivity(mainContext, (int) System.currentTimeMillis(), intent, 0);

然后在您的家庭活动中在onCreate中添加以下代码,

boolean fromNotificationClick=false; 
Bundle extras=getIntent().getExtras();

 if(null!=extras) 
fromNotificationClick=extras.getBoolean("fromNotificationClick"); 

if(fromNotificationClick){ alert(); }

最后添加警报方法的代码。

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();

    }