使用 PendingIntent 显示对话框 [英] Show Dialog using 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屋!