Как вы используете диалоговое окно оповещения в приемнике вещания в Android? - PullRequest
2 голосов
/ 30 мая 2011

Итак, у меня есть Broadcast Receiver, который прослушивает входящие SMS и ищет в SMS определенные термины.Я реализовал приемник в манифесте и в отдельном классе от моей деятельности.

* РЕДАКТИРОВАТЬ: * В зависимости от того, содержит ли SMS определенный термин или нет, мне нужно всплывающее диалоговое окно, и в этом диалоговом окне пользователь будетпредоставляется возможность перейти на конкретный веб-сайт или не перейти на конкретный веб-сайт.

Если бы я делал это на другом языке, у меня была бы просто глобальная переменная, которую получатель изменял бы, а затем другой метод проверял бы ее значение, чтобы определить, нужно ли ему что-то выполнять, но я могу 'сделать это в Android.

Ответы [ 4 ]

2 голосов
/ 30 мая 2011

Я не уверен, что ваш заголовок и ваш вопрос совпадают, но если вы хотите открыть веб-сайт в браузере, просто запустите Intent из вашего BroadcastReceiver.

Если вам нужен явный AlertDialog, см. AlertDialog из BroadcastReceiver ??Можно ли это сделать? для некоторых деталей: вам придется использовать Intent и запустить Activity с новым установленным флагом задачи.

EDIT: вы бы сделали что-то вроде этого:

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 голос
/ 19 декабря 2011

Если они позволяют это, любое приложение может блокировать экран и создавать проблемы для других приложений. Вот почему я думаю , Android не дал нам возможности использовать окно оповещения для вещателя. Я могу ошибаться, но я проверил это один раз, и в тот раз это не сработало.

Альтернатива, Вы можете использовать ТОСТ

0 голосов
/ 23 мая 2017

если вы хотите открыть диалоговое окно с предупреждением после получения ответа в 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();

    }
0 голосов
/ 07 июля 2011

Вы хотите, чтобы диалоговое окно предупреждения отображалось так, как будто оно открывается поверх всего. Используйте намерение начать новую деятельность с полностью прозрачным / прозрачным фоном. Этот метод заставляет диалоговое окно с предупреждением отображаться как оно сверху рабочего стола с иконками на заднем плане; -)

...