Getting the exception as java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

Viewed 40

I am working on reminder application in which i have to set set multiple alarms with different timings so I have used different request code. So I'm using random function to create random digit for different request codes. My reminder activity code:-

private void setAlarm(String text, String date, String time) {
         AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        //assigning alarm manager object to set alarm
         Random random = new Random();
        String i = String.valueOf(random.nextInt(10));
        Intent intent = new Intent(getApplicationContext(), AlarmBroadcast.class);
        intent.putExtra("event", text);
         intent.putExtra("time", date);
        intent.putExtra("date", time);
        intent.putExtra("random",i);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), Integer.parseInt(i), intent, 0);        
        DateFormat formatter = new SimpleDateFormat("d-M-yyyy hh:mm");
        try {
            Date date1 = formatter.parse(finalalarm);
             am.set(AlarmManager.RTC_WAKEUP, date1.getTime(), pendingIntent);
        } catch (ParseException e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }

In broadcast receiver , I am passing that random value to the service class for notification.

public class AlarmBroadcast extends BroadcastReceiver {
     @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        String text = bundle.getString("event");
        String date = bundle.getString("date") + " " + bundle.getString("time");
        int random = Integer.parseInt(bundle.getString("random"));
         Intent intentService = new Intent(context, AlarmService.class);
        intentService.putExtra("message",text);
        intentService.putExtra("random",random);
        context.startService(intentService);

Alarmservice.java

public class AlarmService extends Service {
    private Vibrator vibrator;
     static String message;
    @Override
    public void onCreate() {
        super.onCreate();
        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Intent intent1 = new Intent(this, NotificationMessage.class);
        message = intent.getStringExtra("message");
        int requestcode= Integer.parseInt(intent.getStringExtra("random"));
        PendingIntent pendingIntent = PendingIntent.getActivity(this,requestcode, intent1,0);
        NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
         NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, "notify_001");
         mBuilder.setSmallIcon(R.drawable.alarm);
         mBuilder.setOnlyAlertOnce(true);
        mBuilder.build().flags = Notification.FLAG_NO_CLEAR | Notification.PRIORITY_HIGH;
        intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        mBuilder.setContent(contentView);
        mBuilder.setContentIntent(pendingIntent);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            String channelId = "channel_id";
            NotificationChannel channel = new NotificationChannel(channelId, "channel name", NotificationManager.IMPORTANCE_HIGH);
            channel.enableVibration(true);
            notificationManager.createNotificationChannel(channel);
            mBuilder.setChannelId(channelId);
            Notification notification = mBuilder.build();
            notificationManager.cancelAll();
            long[] pattern = {0, 100, 1000, 200, 2000};
            vibrator.vibrate(pattern, -1);
            startForeground(1, notification);
        }
        return START_STICKY;
    }

When I debug the code following error occurs

W/Bundle: Key random expected String but value was a java.lang.Integer. The default value was returned. W/Bundle: Attempt to cast generated internal exception: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at android.os.BaseBundle.getString(BaseBundle.java:1121) at android.content.Intent.getStringExtra(Intent.java:7185) at org.tensorflow.lite.examples.detection.Reminder.AlarmService.onStartCommand(AlarmService.java:43) at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3726) at android.app.ActivityThread.-wrap20(Unknown Source:0) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:910)
E/AndroidRuntime: FATAL EXCEPTION: main Process: org.tensorflow.lite.examples.detection, PID: 4157 java.lang.RuntimeException: Unable to start service org.tensorflow.lite.examples.detection.Reminder.AlarmService@e128645 with Intent { cmp=org.tensorflow.lite.examples.detection/.Reminder.AlarmService (has extras) }: java.lang.NumberFormatException: s == null at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3757) at android.app.ActivityThread.-wrap20(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1873) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:6977) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:910) Caused by: java.lang.NumberFormatException: s == null at java.lang.Integer.parseInt(Integer.java:570) at java.lang.Integer.parseInt(Integer.java:643)

0 Answers
Related