使用 PendingIntent 显示对话框 [英] Show Dialog using PendingIntent

查看:25
本文介绍了使用 PendingIntent 显示对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理日历事件提醒.Android 中没有原生日历事件提醒,因此用户可以安装不同的日历应用.

I am working on Calender Events reminder . There is no native Calender events reminder in Android so user install different calender apps.

现在这些应用程序可以在提醒事件上有所不同,例如可以显示提醒通知.现在我希望我在这些事件日历应用程序中以编程方式设置一个事件,并且按时到达不显示任何通知,而是会显示一个弹出消息,并带有类似声音的警报.那时我使用了该站点的代码.它可以工作,但会以通知的形式显示提醒.

Now these apps can be different on reminding events like on reminder notifications can be shown. Now I want that I set an event programmatically in these event calender apps and on time reached not show any notification rather a pop up message will be shown with alarm like sound. At that I using a code from that site . Its working but it showing reminders in form of notifications.

代码如下:

接收

void doReminderWork(Intent intent) {
    Long rowId = intent.getExtras().getLong(RemindersDbAdapter.KEY_ROWID);

    NotificationManager mgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

    Intent notificationIntent = new Intent(this, ReminderEditActivity.class); 
    notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId); 

    PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

    Notification note=new Notification(android.R.drawable.stat_sys_warning, getString(R.string.notify_new_task_message), System.currentTimeMillis());
    note.setLatestEventInfo(this, getString(R.string.notify_new_task_title), getString(R.string.notify_new_task_message), pi);
    note.defaults |= Notification.DEFAULT_SOUND; 
    note.flags |= Notification.FLAG_AUTO_CANCEL; 


    int id = (int)((long)rowId);
    mgr.notify(id, note);
}

现在我想显示一个对话框而不是通知,以便如何通过使用这些代码行来在对话框中使用这个待处理的意图.

Now I want to show a dialog box instead of notification so how it can be possible from using these lines of code that this pending intent should be used in dialogue box.

 Intent notificationIntent = new Intent(this, ReminderEditActivity.class); 
notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId); 

PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

推荐答案

在您的接收器类中,只需编写代码即可显示对话框而不是通知.

In your Receiver class, just code to get the dialog to display instead of Notification.

显示对话框的类:

public class AlarmDialogPopUp extends Activity
{

    private int m_alarmId;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Get the alarm ID from the intent extra data
        Intent intent = getIntent();
        Bundle extras = intent.getExtras();

        if (extras != null) {
            m_alarmId = extras.getInt("AlarmID", -1);
        } else {
            m_alarmId = -1;
        }

        // Show the popup dialog
        showDialog(0);
    }

    @Override
    protected Dialog onCreateDialog(int id)
    {
        super.onCreateDialog(id);

        // Build the dialog
        AlertDialog.Builder alert = new AlertDialog.Builder(this);

        alert.setTitle("ALARM REMINDER");
        alert.setMessage("Its time for the alarm ");
        alert.setCancelable(false);

        alert.setPositiveButton("Dismiss", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                AlarmDialogPopUp.this.finish();
            }
        });

        // Create and return the dialog
        AlertDialog dlg = alert.create();

        return dlg;
    }
}

在您的 onReceive 中显示对话框:

In your onReceive to show dialog :

public void onReceive(Context context, Intent intent)
    {
          // Launch the alarm popup dialog
            Intent alarmIntent = new Intent("android.intent.action.MAIN");

            alarmIntent.setClass(context, AlarmDialogPopUp .class);
            alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            // Pass on the alarm ID as extra data
            alarmIntent.putExtra("AlarmID", intent.getIntExtra("AlarmID", -1));

            // Start the popup activity
            context.startActivity(alarmIntent);

    }

根据评论进行

要播放声音,您需要使用如下所示的 MediaPlayer.

To play sound, you need to make use of MediaPlayer like below.

AlarmDialogPopUp活动类的onCreate()中添加这一行来播放声音.

Add this line in the onCreate() of AlarmDialogPopUp activity class to play the sound.

MediaPlayer mediaPlayer; //global variable.

    mediaPlayer = MediaPlayer.create(this,R.raw.alarmsound);

在对话框的 onClick() 中添加以下几行以停止声音:

Add the below lines in the onClick() of the dialog to stop the sound:

mediaPlayer.stop();
mediaPlayer.release();

希望这会有所帮助.

这篇关于使用 PendingIntent 显示对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆