0

I have tried to follow many links but no matter what my extras keep being null. First I have an activity (MainActivity) that will set up a notification using a service (NotifyService). I can get the service to be and the notification to appear at the appropriate time. However passing a string seems to be a problem.

In MainActivity onCreate() I have:

 Intent myIntent = new Intent(this, NotifyService.class);
 //this is what I would like to pass over
 myIntent.putExtra("newtitle" ,"this is the new title");
 myIntent.putExtra("newcontent" ,"this is the new content");

 AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
 PendingIntent pendingIntent = PendingIntent.getService(this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

 Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.SECOND, 0);
 calendar.set(Calendar.MINUTE, 25);
 calendar.set(Calendar.HOUR, 11);
 calendar.set(Calendar.AM_PM, Calendar.PM);

 alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);


 Toast.makeText(MainActivity.this, "Set Alarm", Toast.LENGTH_LONG).show();

In My NotifyService onCreate I have:

Intent intent = new Intent(this.getApplicationContext(),MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
//this will be null or give me errors every time
//        if (intent.getExtras().containsKey("newtitle"))
//            title=(String) intent.getExtras().get("newtitle");
//        if (intent.getExtras().containsKey("newcontent"))
//            content=(String) intent.getExtras().get("newcontent");

    NotificationCompat.Action action = new NotificationCompat.Action.Builder(
            R.drawable.basketball, getString(R.string.wearTitle), pendingIntent
    ).build();

    Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    Notification notification = new NotificationCompat.Builder(this)
            .setContentText(content)
            .setContentTitle(title)
            .setSmallIcon(R.drawable.basketball)
            .setSound(sound)
            .extend(new NotificationCompat.WearableExtender().addAction(action))
            .build();

    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(this);
    notificationManagerCompat.notify(001, notification);

Mainly I've been following this tutorial: https://www.youtube.com/watch?v=tyVaPHv-RGo.

I've also looked at this link: How can I correctly pass unique extras to a pending intent?

I have tried many things with the PendingIntent flags but still no luck. I've seen it done with intents and services but nothing with pending intents.

Thanks a lot

Community
  • 1
  • 1
user3454910
  • 89
  • 1
  • 10

1 Answers1

2

Turns out instead on using it on create, I have to use onStartCommand. Here's the code:

@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
    Toast.makeText(this, "Starting..", Toast.LENGTH_SHORT).show();
    Log.d("0",intent.getStringExtra("newtitle"));

    title = intent.getStringExtra("newtitle");
    content = intent.getStringExtra("newcontent");
    Intent myintent = new Intent(this.getApplication(), MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,myintent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Action action = new NotificationCompat.Action.Builder(
            R.drawable.basketball, getString(R.string.wearTitle), pendingIntent
    ).build();

    Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    Notification notification = new NotificationCompat.Builder(this)
            .setContentText(content)
            .setContentTitle(title)
            .setSmallIcon(R.drawable.basketball)
            .setSound(sound)
            .extend(new NotificationCompat.WearableExtender().addAction(action))
            .build();

    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(this);
    notificationManagerCompat.notify(001, notification);
    return PendingIntent.FLAG_UPDATE_CURRENT; // or whatever your flag
}

Got it from: Pass data from Activity to Service using an Intent

Community
  • 1
  • 1
user3454910
  • 89
  • 1
  • 10