Non-Removable Notifications در اندروید

سه شنبه 19 آبان 1394

در این مقاله قصد داریم در مورد notification ها صحبت نماییم، که چگونه می توانیم یک Notification بگذاریم که ثابت بماند و یا Non-removable باشد .

Non-Removable Notifications  در اندروید

Notification ها یا اطلاعیه ها در اندروید کاربرد زیادی دارد به عنوان مثال در یک برنامه بخواهیم که سر ساعت مشخص شده ای یک Notification  برای ما ارسال شود ، و به ما کار روزانه یمان را یادآوری کند.

Notification یک پیام است که معمولا در sidebar ما (نوار بالای گوشی ) قرار دارد، که اطلاعات را به ما نمایش می دهد.

برای ساخت notification باید از یک ID استفاده نماییم، اگر از ID استفاده کنیم حذف کردن Notification بسیار آسان است.

Context context;  
final int NOTIFICATION_ID = 1; 

حالا یک شی برای ساخت notification می سازیم به صورت زیر:


    context = NonRemovableNotification.this;  
    //here NonRemovableNotification is an Activity  
    // create notification builder object  
    Notification.Builder builder = new Notification.Builder(context);  

در خط بعدی موضوع و خلاصه ی متن و آیکون را برای  Notification تنظیم می نماییم.

   Notification.Builder builder = new Notification.Builder(context);
        builder.setContentText("مقالات امروز دوشنبه 94/08/18").setContentTitle(
                "مرجع تخصصی برنامه نویسان");
        builder.setSmallIcon(R.drawable.bar );

سپس یک activity جدید می سازید و برای اینکه کاربر وقتی Notification  را دید وارد خود activity شود کد های زیر را می نویسید:

// make the intent object  
Intent secondActivityIntent = new Intent(NonRemovableNotification.this,  
SecondaryActivity.class);  
// pending intent  
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,  
secondActivityIntent, 0); 

سپس شی ای که از Notification  ساختید را به activity  مورد نظر set می کنید در واقع شی ساخته شده باید در Activity مورد نظر نمایش داده شود.


    builder.setContentIntent(pendingIntent);  
    builder.setAutoCancel(false);  

حالا برای اینکه Notification ما غیر قابل حذف یا به اصطلاح Non-Removable باشد باید flag آن را روی No-Clear قرار دهید.


    Notification notification = builder.build();  
    notification.flags |= Notification.FLAG_NO_CLEAR;  

حالا یک Notification_Manager می سازیم و ID را که ساختیم و شی Notification را که تعریف کردیم برای آن تنظیم می کنیم.

NotificationManager manager = (NotificationManager) context  
.getSystemService(Context.NOTIFICATION_SERVICE);  
manager.notify(NOTIFICATION_ID, notification);

کد کامل کلاس جاوا به صورت زیر است:


import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

public class MyActivity extends Activity {
    Context context;
    final int NOTIFICATION_ID = 1;
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        context = MyActivity.this;
        // create notification builder object
        Notification.Builder builder = new Notification.Builder(context);
        builder.setContentText("مقالات امروز دوشنبه 94/08/18").setContentTitle(
                "مرجع تخصصی برنامه نویسان");
        builder.setSmallIcon(R.drawable.bar );
        // make the intent object
        Intent secondActivityIntent = new Intent();

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                secondActivityIntent, 0);
        builder.setContentIntent(pendingIntent);
        builder.setAutoCancel(false);
        Notification notification = builder.build();
        // this is the main thing to do to make a non removable notification
        notification.flags |= Notification.FLAG_NO_CLEAR;
        NotificationManager manager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
        manager.notify(NOTIFICATION_ID, notification);

    }
}

خروجی کار به صورت زیر است:

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید