javaandroidsecurityexceptionandroid-securityexception

Local notification caused SecurityException


I have made a method that sends a local notification when a progress finishes loading, when I build the App it's all clear without any errors/warnings I received this after releasing with Google console crash report

Here is the notification method:

public void notif() {

    final int NOTIFICATION_ID = 1;
    int icon = getIcon();
    String provx = getProv();

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getBaseContext());
    Notification notification = mBuilder
            .setSmallIcon(icon)               
            .setVibrate(new long[]{1000, 1000})
            .setLights(Color.BLUE, 700, 500)
            .setContentTitle("New notification!")
            .setStyle(new NotificationCompat.BigTextStyle().bigText(provx))
            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
            .setContentText(provx)
            .build();

    NotificationManager nMN = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    nMN.notify(NOTIFICATION_ID, notification); //here where I got the error
}

This is the crash log:

java.lang.SecurityException: 
   at android.os.Parcel.readException (Parcel.java:1425)
   at android.os.Parcel.readException (Parcel.java:1379)
   at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag (INotificationManager.java:246)
   at android.app.NotificationManager.notify (NotificationManager.java:135)
   at android.app.NotificationManager.notify (NotificationManager.java:111)
   at com.dev.days.myapp.Splash.notif (Splash.java:184)
   at com.dev.days.myapp.Splash$1.run (Splash.java:151)
   at java.lang.Thread.run (Thread.java:856)

Solution

  • as @Adam S suggested above this is was simply solved by adding a VIBRATE permission in the manifest file

    <uses-permission android:name="android.permission.VIBRATE" />