以下是我的代码可以任何正文告诉我为什么它不起作用。我从this tutorial学到了它。但它没有任何帮助将是可以理解的。
我的代码是
import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.ListActivity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class Notify extends Activity {
Button btn;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nit);
Calendar cal=Calendar.getInstance();
cal.set(Calendar.MONTH,6);
cal.set(Calendar.YEAR,2011);
cal.set(Calendar.DAY_OF_MONTH,29);
cal.set(Calendar.HOUR_OF_DAY,17);
cal.set(Calendar.MINUTE,30);
//String[] dude=new String[] {"nitin","avi","aman","rahul","pattrick","minkle","manmohan","nitin","nitin"};
//setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,dude));
//getListView().setTextFilterEnabled(true);
//String[] dude1=new String[] {"nitin","avi","aman","rahul","pattrick","minkle","manmohan"};
Intent intent = new Intent(this, Mote.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),pendingIntent );
Toast.makeText(this, "Alarm worked.", Toast.LENGTH_LONG).show();
}
}
,我的Receiver类
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class Mote extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();
int icon = R.drawable.icon;
CharSequence tickerText = "Hello you have to take medicine I am Nitin Sharma";
long when = System.currentTimeMillis();
//Notification notification = new Notification(icon, tickerText,when );
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
//notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
final int NOTIF_ID = 1234;
NotificationManager notofManager = (NotificationManager)context. getSystemService(Context.NOTIFICATION_SERVICE);
// Notification note = new Notification(R.drawable.face,"NEW ACTIVITY", System.currentTimeMillis());
Intent notificationIntent = new Intent(context, Alset.class);
PendingIntent contentIntent = PendingIntent.getActivity(context,0, notificationIntent, 0);
Notification notification = new Notification(icon, tickerText,when );
//Notification notification1 = new Notification(R.drawable.icon, "Wake up alarm", System.currentTimeMillis());
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notification.flags = Notification.FLAG_INSISTENT;
notification.defaults |= Notification.DEFAULT_SOUND;
//notification.setLatestEventInfo(context, "My Activity", "This will runs on button click", contentIntent);
notofManager.notify(NOTIF_ID,notification);
//PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0);
//notification.setLatestEventInfo(context, "Context Title", "Context text", contentIntent);
//notification.flags = Notification.FLAG_INSISTENT;
}
}
答案 0 :(得分:22)
我想你想在6月26日而不是7月26日设置警报。如果是,请将cal.set(Calendar.MONTH,6);
更改为cal.set(Calendar.MONTH,5);
,因为这些月份是从零开始的。如果您打算在7月26日发出警报,那么当日期时间是2011年7月26日17:30时,预计会发出警报。
答案 1 :(得分:3)
1.在清单文件中添加此内容
<receiver android:name=".MyAlarmReciever">
<intent-filter>
<action android:name="com.example.helloandroid.alarms" />
</intent-filter>
</receiver>
开展活动
public class AlrmActivity extends BaseAcitivity {
TimePicker myTimePicker;
Button buttonstartSetDialog;
TextView textAlarmPrompt;
TimePickerDialog timePickerDialog;
final static int RQS_1 = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alrm);
textAlarmPrompt = (TextView)findViewById(R.id.alarmprompt);
buttonstartSetDialog = (Button)findViewById(R.id.startSetDialog);
buttonstartSetDialog.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
textAlarmPrompt.setText("");
openTimePickerDialog(false);
}});
}
private void openTimePickerDialog(boolean is24r){
Calendar calendar = Calendar.getInstance();
timePickerDialog = new TimePickerDialog(
AlrmActivity.this,
onTimeSetListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
is24r);
timePickerDialog.setTitle("Set Alarm Time");
timePickerDialog.show();
}
TimePickerDialog.OnTimeSetListener onTimeSetListener
= new TimePickerDialog.OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();
calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
calSet.set(Calendar.MINUTE, minute);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);
if(calSet.compareTo(calNow) <= 0){
//Today Set time passed, count to tomorrow
calSet.add(Calendar.DATE, 1);
}
setAlarm(calSet);
}};
private void setAlarm(Calendar targetCal){
textAlarmPrompt.setText(
"\n\n***\n"
+ "Alarm is set@ " + targetCal.getTime() + "\n"
+ "***\n");
Intent intent = new Intent(getBaseContext(), MyAlarmReciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}
}
3。 xml文件包含
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello" />
<Button
android:id="@+id/startSetDialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Set Target Time"/>
<TextView
android:id="@+id/alarmprompt"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
4.制作警报管理员课程
public class MyAlarmReciever extends BroadcastReceiver {
Vibrator v;
Context ct;
String title;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
ct=context;
Log.e("onReceive", "ladskjflsakjdflskjdflskjdfslkjdflasdf");
Toast.makeText(context, "OnReceive alarm test", Toast.LENGTH_SHORT).show();
v=(Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(3000);
int badgeCount = 1;
// ShortcutBadger.applyCount(context, badgeCount);
ShortcutBadger.removeCount(context);
Bundle bundle = intent.getExtras();
try{
title = intent.getExtras().get("title").toString();
// title = intent.getStringExtra("title");
Toast.makeText(context, title, Toast.LENGTH_LONG).show();
}catch(Exception e){
e.printStackTrace();
}
// if (!Utlis.checkNetworkConnection(context)) {
//
// Notification(context, "Wifi Connection off");
//
// } else {
Notification(context, "Please pray for this prayer ");
// }
}
public void Notification(Context context, String message) {
// Set Notification Title
String strtitle = "iPray Prayer Reminder";
// Open NotificationView Class on Notification Click
Intent intent = new Intent(context, PrayerForOtherActivity.class);
// Send data to NotificationView Class
intent.putExtra("title", title);
intent.putExtra("text", title);
// Open NotificationView.java Activity
PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
// NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.drawable.app_icon, "Previous", pIntent).build();
// Create Notification using NotificationCompat.Builder
NotificationCompat.Builder builder = new NotificationCompat.Builder(
context)
// Set Icon
.setSmallIcon(R.drawable.app_icon)
// Set Ticker Message
.setTicker(message)
// Set Title
.setContentTitle(context.getString(R.string.app_name))
// Set Text
.setContentText(message)
// Add an Action Button below Notification
// Set PendingIntent into Notification
.setContentIntent(pIntent)
// Dismiss Notification
.setAutoCancel(true);
// Create Notification Manager
NotificationManager notificationmanager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
// Build Notification with Notification Manager
notificationmanager.notify(38, builder.build());
}
}
答案 2 :(得分:2)
您是否在清单文件中设置了接收器? 像这样的东西
<receiver android:process=":remote" android:name=".Mote"></receiver>
答案 3 :(得分:0)
希望这会有所帮助
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();
calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
calSet.set(Calendar.MINUTE, minute);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);
if(calSet.compareTo(calNow) <= 0){
//Today Set time passed, count to tomorrow
calSet.add(Calendar.DATE, 1);
}
setAlarm(calSet);
}};
private void setAlarm(Calendar targetCal){
textAlarmPrompt.setText(
"\n\n***\n"
+ "Alarm is set@ " + targetCal.getTime() + "\n"
+ "***\n");
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
// alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent);
}