javaandroidandroid-studioibeaconestimote

NotificationManager Error Android Studio


I have write a code to have pop-up Notification when in range of Beacon.

my code for notification like this:

private void showNotification(String message){
        Log.d("Hay8","DCM8");
        Intent intent = new Intent(context, MainActivity.class);
        Log.d("Hay9","DCM9");
        PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
        Log.d("Hay10","DCM10");

        NotificationCompat.Builder builder = new NotificationCompat.Builder(context,"default")
                .setSmallIcon(android.R.drawable.ic_dialog_info)
                .setContentTitle("Notification1")
                .setContentText(message)
                .setDefaults(NotificationCompat.DEFAULT_ALL)
                .setPriority(NotificationCompat.PRIORITY_HIGH)
                .setContentIntent(pendingIntent);
        Log.d("Hay11","DCM11");



        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Log.d("Hay12","DCM12");
        notificationManager.notify(NotiID++,builder.build());
    }

and i try to debug using log and i think problem is about NotificationManager method. Here is the log:

05-23 17:23:30.774 18668-18668/com.example.user.estimotebeacon D/Hay8: DCM8
05-23 17:23:30.774 18668-18668/com.example.user.estimotebeacon D/Hay9: DCM9
05-23 17:23:30.776 18668-18668/com.example.user.estimotebeacon D/Hay10: DCM10
05-23 17:23:30.780 18668-18668/com.example.user.estimotebeacon D/Hay11: DCM11
05-23 17:23:30.781 18668-18668/com.example.user.estimotebeacon D/Hay12: DCM12
05-23 17:23:30.788 18668-18668/com.example.user.estimotebeacon E/NotificationManager: notifyAsUser: tag=null, id=1, user=UserHandle{0}
05-23 17:23:30.798 18668-18668/com.example.user.estimotebeacon D/Hay20: DCM20
05-23 17:23:30.859 18668-19389/com.example.user.estimotebeacon D/NetworkSecurityConfig: No Network Security Config specified, using platform default
05-23 17:23:32.088 18668-18674/com.example.user.estimotebeacon I/zygote64: Do partial code cache collection, code=28KB, data=21KB
05-23 17:23:32.089 18668-18674/com.example.user.estimotebeacon I/zygote64: After code cache collection, code=28KB, data=21KB
    Increasing code cache capacity to 128KB

So my app is running but without any notification.


Solution

  • I think you are not created notification channel . That's why it doesn't shows notification. You have to create a channel first

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                builder.setChannelId("com.myApp");
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationChannel channel = new NotificationChannel(
                        "com.myApp",
                        "My App",
                        NotificationManager.IMPORTANCE_DEFAULT
                );
                if (notificationManager != null) {
                    notificationManager.createNotificationChannel(channel);
                }
            }
    

    The complete solution as follows

     private void showNotification(String message){
    
            Log.d("Hay8","DCM8");
            Intent intent = new Intent(context, MapsActivity.class);
            Log.d("Hay9","DCM9");
            PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
            Log.d("Hay10","DCM10");
    
            NotificationCompat.Builder builder = new NotificationCompat.Builder(context,"default")
                    .setSmallIcon(android.R.drawable.ic_dialog_info)
                    .setContentTitle("Notification1")
                    .setContentText(message)
                    .setDefaults(NotificationCompat.DEFAULT_ALL)
                    .setPriority(NotificationCompat.PRIORITY_HIGH)
                    .setContentIntent(pendingIntent);
            Log.d("Hay11","DCM11");
    
    
    
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            Log.d("Hay12","DCM12");
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                builder.setChannelId("com.myApp");
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationChannel channel = new NotificationChannel(
                        "com.myApp",
                        "My App",
                        NotificationManager.IMPORTANCE_DEFAULT
                );
                if (notificationManager != null) {
                    notificationManager.createNotificationChannel(channel);
                }
            }
            notificationManager.notify(2,builder.build());
        }