Witam! Próbuję dodać do mojej aplikacji - Lista zadań(ToDo) generowanie powiadomień, np jeśli użytkownik ma coś zrobić za tydzień o 20:00 i chce aby aplikacja przypomniała o tym o 18:00, muszę wyświelić powiadomienie z nazwą, godziną i najlepiej dźwiękiem(podobnie jak przy budziku). Niestety nie do końca rozumiem jak to zrobić. Mam taki kod jak poniżej, ale niestety żadne powiadomienia mi się nie wyświetlają.
MainActivity.java
AlarmManager alarmManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Intent myIntent = new Intent(MainActivity.this, MyAlarmService.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);
alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
lvItems = (ListView) findViewById(R.id.listView);
lvItems.invalidateViews();
// itemsAdapter.notifyDataSetChanged();
readItems();
checkTime();
............................ }
public void checkTime(){
final Calendar c = Calendar.getInstance();
Calendar StartTime = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH)+1;
mDay = c.get(Calendar.DAY_OF_MONTH);
String data;
data = mDay + " " + mMonth + " " + mYear;
simpleDateFormat = new SimpleDateFormat("HH:mm");
String nazwa,path,prior;
mTime = simpleDateFormat.format(c.getTime());
String[] time = mTime.split(":");
String[] date;
for (int i = 0; i<events.size(); i++) {
Zdarzenie zt = events.get(i);
boolean stat = zt.isAktywny();
if (zt.getGodzina_przypomnienia()!=null && zt.getData_przypomnienia() !=null && data.equals(zt.getData_przypomnienia()) && mTime.equals(zt.getGodzina_przypomnienia()) && stat) {
Toast t2 = Toast.makeText(MainActivity.this, "You selected : " + data , Toast.LENGTH_LONG);
t2.show();
nazwa = zt.getNazwa();
path = zt.getPath();
prior = zt.getPriorytet();
date = zt.getData_przypomnienia().split("//.");
rok = Integer.parseInt(date[2]);
mc = Integer.parseInt(date[1]);
dzien = Integer.parseInt(date[0]);
godz = Integer.parseInt(time[0]);
min = Integer.parseInt(time[1]);
sec = 0;
StartTime.set(rok, mc, dzien, godz, min, sec);
/* if (prior.equals("Ważny") && stat==true) {
showNotification_w(nazwa, path);
}
if(prior.equals("Normalny") && stat ==true) {
showNotification_n(nazwa, path);
}*/
alarmManager.set(AlarmManager.RTC, StartTime.getTimeInMillis(), pendingIntent);
}
}
}
MyAlarmService.java
package com.example.administrator.myapplication;
import android.app.Service;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.IBinder;
import android.support.v7.app.NotificationCompat;
/**
* Created by Administrator on 2016-02-03.
*/
public class MyAlarmService extends Service {
private NotificationManager mManager;
String priority;
String nazwa;
String path;
Bitmap bm;
@Override
public IBinder onBind(Intent arg0)
{
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate()
{
// TODO Auto-generated method stub
super.onCreate();
}
@SuppressWarnings("static-access")
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
// MainActivity.checkTime();
for (int i = 0; i<MainActivity.events.size(); i++) {
Zdarzenie zt = MainActivity.events.get(i);
priority = zt.getPriorytet();
path = zt.getPath();
nazwa = zt.getNazwa();
}
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
final int REQUIRED_SIZE = 200;
int scale = 1;
// Bitmap bm;
while (options.outWidth / scale / 2 >= REQUIRED_SIZE
&& options.outHeight / scale / 2 >= REQUIRED_SIZE) {
scale *= 2;
options.inSampleSize = scale;
options.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(path, options);
}
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mManager = (NotificationManager) this.getApplicationContext().getSystemService(this.getApplicationContext().NOTIFICATION_SERVICE);
Intent intent1 = new Intent(this.getApplicationContext(), MainActivity.class);
// Notification notification = new Notification(R.drawable.ic_launcher,"This is a test message!", System.currentTimeMillis());
intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this.getApplicationContext(), 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
if (priority.equals("Ważny")) {
// PendingIntent pendingNotificationIntent1 = PendingIntent.getActivity(this.getApplicationContext(), 0, intent1, 0);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("Przypomnienie!")
.setContentText(nazwa)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(bm)
.setContentIntent(pendingNotificationIntent)
.setSound(soundUri)
.setAutoCancel(false)
.setPriority(Notification.PRIORITY_MAX)
.setColor(getResources().getColor(R.color.colorPrimary))
.build();
// .setLatestEventInfo(this.getApplicationContext(), "Przypomnienie!", nazwa, pendingNotificationIntent)
// .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
System.currentTimeMillis();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
mManager.notify(0, notification);
}
if (priority.equals("Normalny")) {
Notification notification2 = new NotificationCompat.Builder(this)
.setContentTitle("Przypomnienie!")
.setContentText(nazwa)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(bm)
.setContentIntent(pendingNotificationIntent)
.setSound(soundUri)
.setAutoCancel(false)
.setColor(getResources().getColor(R.color.colorPrimary))
//.setLatestEventInfo(this.getApplicationContext(), "AlarmManagerDemo", "This is a test message!", pendingNotificationIntent)
// .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
.build();
notification2.flags |= Notification.FLAG_AUTO_CANCEL;
System.currentTimeMillis();
mManager.notify(0, notification2);
}
}
@Override
public void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
}
}
MyReciever.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Intent service1 = new Intent(context, MainActivity.class);
context.startService(service1);
}
}