जब ऐप चल रहा हो या खुला हो तो मैं अधिसूचना नहीं दिखाना चाहता हूं। मैं एंड्रॉइड स्टूडियो अधिसूचना बनाने के लिए अलार्म मैनेजर सेवा का उपयोग कर रहा हूं। ऐप खुला होने पर मुझे अधिसूचना मिल रही है। इसलिए मैं इस बात को रोकना चाहता हूं। और नोटिफिकेशन तभी चाहते हैं जब ऐप बैकग्राउंड में हो या मार दिया गया हो।

private void notificationDialog() {
        NotificationManager notificationManager = (NotificationManager) context1.getSystemService(Context.NOTIFICATION_SERVICE);
        String NOTIFICATION_CHANNEL_ID = "tutorialspoint_01";
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            @SuppressLint("WrongConstant") NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "My Notifications", NotificationManager.IMPORTANCE_LOW);
            // Configure the notification channel.
            notificationChannel.setDescription("New Message Received");
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.setVibrationPattern(new long[]{0, 1000, 500, 1000});
            notificationChannel.enableVibration(true);
            notificationManager.createNotificationChannel(notificationChannel);
        }
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context1, NOTIFICATION_CHANNEL_ID);
        notificationBuilder.setAutoCancel(true)
                .setDefaults(Notification.DEFAULT_SOUND)
                .setVibrate(null)
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.mipmap.ic_launcher)
                .setTicker("Tutorialspoint")
                //.setPriority(Notification.PRIORITY_MAX)
                .setContentTitle("New Message Received")
                .setContentText("This is sample notification")
                .setContentInfo("Information");
        notificationManager.notify((int)System.currentTimeMillis(), notificationBuilder.build());
    }
1
Puneet Kansal 18 अप्रैल 2019, 11:33

1 उत्तर

सबसे बढ़िया उत्तर

जांचें कि ऐप अग्रभूमि है या नहीं। यदि ऐप अग्रभूमि मोड में नहीं है तो केवल अधिसूचना बनाएं।

public static boolean isAppForground(Context context) {

    ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> l = mActivityManager.getRunningAppProcesses();
    for (ActivityManager.RunningAppProcessInfo info : l) {
        if (info.uid == context.getApplicationInfo().uid && info.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
            return true;
        }
    }
    return false;
}


private void notificationDialog() { 
    if(!isAppForground(getApplicationContext)){

      ** your notification create code here**
    }
}
1
Krishna sheladiya 18 अप्रैल 2019, 08:51