Non-Removable Notifications در اندروید
سه شنبه 19 آبان 1394در این مقاله قصد داریم در مورد notification ها صحبت نماییم، که چگونه می توانیم یک Notification بگذاریم که ثابت بماند و یا Non-removable باشد .
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); } }
خروجی کار به صورت زیر است:
- Android
- 1k بازدید
- 3 تشکر