Voici mon code. N'importe qui, s'il vous plaît, dites-moi pourquoi il ne fonctionne pas. Je l'ai appris de ce tutoriel . Mais cela ne fonctionne pas, toute aide sera appréciable.
Mon code est
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();
}
}
et ma classe de destinataire est
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;
}
}
Je pense que vous voulez régler l'alarme pour le 26 juin et non le 26 juillet. Si tel est le cas, remplacez cal.set(Calendar.MONTH,6);
par cal.set(Calendar.MONTH,5);
car les mois sont basés sur zéro. si vous avez l'intention de déclencher l'alarme le 26 juillet, vous devez vous attendre à ce que l'alarme se déclenche à la date indiquée pour le 26 juillet 2011 à 17h30.
1.add this in manifest file
<receiver Android:name=".MyAlarmReciever">
<intent-filter>
<action Android:name="com.example.helloandroid.alarms" />
</intent-filter>
</receiver>
2. make a activity
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 file include
<?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 .make alarm manager class
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());
}
}
Avez-vous défini le destinataire dans votre fichier manifeste?
<receiver Android:process=":remote" Android:name=".Mote"></receiver>
espérons que cela aidera
@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);
}