سبد (0)

نمایش اعلان ها(Notifications)

نمایش اعلان ها

1.به وسیله ی ایکلیپس یک پروژه ی جدید به نام Notifications ایجاد کنید.

2.یک کلاس جدید با نام NotificationView به پکیج اضافه کنید و همچنین فایل notification.xml در فولدر res/layout را ایجاد کنید.

3.فایل notification.xml را به صورت زیر تغییر دهید:

notification.xml

<?xml version=”1.0” encoding=”utf-8”?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent” >
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Here are the details for the notification...” />
</LinearLayout>

4.فایل NotificationView.java را به صورت زیر تغییر دهید:

NotificationView.java

package com.PRG.Notifications;
import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;
public class NotificationView extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.notification);
//---look up the notification manager service---
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
//---cancel the notification that we started
nm.cancel(getIntent().getExtras().getInt(“notificationID”));
}
}

5.فایل AndroidManifest.xml را به صورت زیر تغییر دهید:

AndroidManifest.xml

<?xml version=”1.0” encoding=”utf-8”?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”net.learn2develop.Notifications”
android:versionCode=”1”
android:versionName=”1.0”>
<application android:icon=”@drawable/icon” android:label=”@string/app_name”>
<activity android:name=”.MainActivity”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”.NotificationView”
android:label=”Details of notification”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.DEFAULT” />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion=”14” />
<uses-permission android:name=”android.permission.VIBRATE” />
</manifest>

6.فایل main.xml را به صورت زیر ویرایش کنید:

main

<?xml version=”1.0” encoding=”utf-8”?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent” >
<Button
android:id=”@+id/btn_displaynotif”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Display Notification” />
</LinearLayout>

7.قسمت های زیر را به فایل MainActivity.java اضافه کنید:

MainActivity

package com.PRG.Notifications;
import android.app.Activity;
import android.os.Bundle;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
int notificationID = 1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.btn_displaynotif);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
displayNotification();
}
});
}
protected void displayNotification()
{
//---PendingIntent to launch activity if the user selects
// this notification---
Intent i = new Intent(this, NotificationView.class);
i.putExtra(“notificationID”, notificationID);
PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, i, 0);
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(
R.drawable.icon,
“Reminder: Meeting starts in 5 minutes”,
System.currentTimeMillis());
CharSequence from = “System Alarm”;
CharSequence message = “Meeting with customer at 3pm...”;
notif.setLatestEventInfo(this, from, message, pendingIntent);
//---100ms delay, vibrate for 250ms, pause for 100 ms and
// then vibrate for 500ms---
notif.vibrate = new long[] { 100, 250, 100, 500};
nm.notify(notificationID, notif);
}
}

8.برنامه را اجرا کنید.

9.روی دکمه ی Display Notification کلیک کنید.حالا یک متن در نوار ابزار به نمایش گذاشته می شود.

10.با کلیک کردن و درگ کردن نوار وضعیت به سمت پایین notification را نشان می دهد.

11.با کلیک کردن روی Notification,اکتیویتی NotificationView ظاهر می شود.

روش کار

 برای نمایش یک پیام,ابتدا یک شئ Intent ایجاد کرده که به کلاس NotificationView اشاره دارد.

NotificationView

//---PendingIntent to launch activity if the user selects
// this notification---
Intent i = new Intent(this, NotificationView.class);
i.putExtra(“notificationID”, notificationID);

 این اینتنت برای اجرای یک اکتیویتی دیگر وقتی که کاربر یک پیام را از لیست پیام ها انتخاب می کند ,می باشد.

در این مثال شما یک جفت نام/مقدار به اینتنت اضافه کردید تا مشخص کنید که هر پیام به کدام اکتیویتی اشاره دارد.این ID را بعداً برای حذف پیام هم بکار می برید.

در ادامه نیاز است تا یک شئ PendingIntent نیز ایجاد گردد.شئ PendingIntent به شما اجازه می دهد تا در برنامه خود عملیاتی را به زمانی دیگر موکول کنید.حال در این زمان ممکن است برنامه ی شما در حال اجرا و یا اجرا نشده باشد.برای این کار به صورت زیر عمل کنید:

pendingIntent

PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, i, 0);

متد()getActivity یک شئ PendingIntent دریافت می کند.حالا به وسیل ی آرگومان های زیر می توان آن را تنظیم کرد:

  • context -- context برنامه
  • request code -- کد درخواستی از اینتنت
  • intent -- اینتنت برای اجرای اکتیویتی هدف و مقصد
  • Flags -- نشان می دهد که آیا اکتیویتی باید اجرا گردد

ُپس یک نمونه از کلاسNotificationManager به دست بیاورید و یک نمونه از کلاس Notification ایجاد کنید:

Classes

class:
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(
R.drawable.icon,
“Reminder: Meeting starts in 5 minutes”,
System.currentTimeMillis());

 کلاس Notification این امکان را به شما می دهد که اطلاعات اصلی را برای وقتی که نوار وضعیت نمایش داده می شود,مشخص کنید.آرگومان دوم سازنده ی Notification,متن نمایش یا ticker text را بر روی نوار وضعیت تنظیم می کند.

در مرحله ی بعد جزئیات پیام را به وسیله ی متد ()setLatestEventInfo تنظیم کنید:

setLatestEventInfo

CharSequence from = “System Alarm”;
CharSequence message = “Meeting with customer at 3pm...”;
notif.setLatestEventInfo(this, from, message, pendingIntent);
//---100ms delay, vibrate for 250ms, pause for 100 ms and
// then vibrate for 500ms---
notif.vibrate = new long[] { 100, 250, 100, 500};

همینطور کد بالا تعیین می کند که آیا ویبره ی گوشی هم صورت گیرد یا خیر.در آخر برای نمایش پیام از متد 
()notify استفاده کنید:

notify

nm.notify(notificationID, notif);

وقتی کاربر روی پیام کلیک کند, اکتیویتی NotificationView اجرا می شود.اما می توانید در اینجا با استفاده از متد ()cancel شئ NotificationManager و ارسال ID پیام,آن را نادیده بگیرید.

NotificationManager

//---look up the notification manager service---
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
//---cancel the notification that we started
nm.cancel(getIntent().getExtras().getInt(“notificationID”));

نکات کلیدی

  • ایجاد یک اکتیویتی:تمام اکتیویتی ها باید در فایل AndroidManifest.xml تعریف شوند.
  • نکات کلیدی چرخه ی حیات در اکتیویتی:وقتی یک اکتیویتی شروع به کار می کند,رویدادهای ()onStart و ()onResume همیشه فراخوانی می شوند.و وقتی که یک اکتیویتی نابود شده و یا به پشت زمینه برود,رویداد()onResume همیشه فراخوانی می شود.
  • نمایش یک اکتیویتی به شکل دیالوگ:از متد ()showDialog و پیاده سازی متد ()onCreateDialog استفاده می شود.
  • اینتنت ها:مثل یک چسب,اکتیویتی های مختلف را  متصل می کند.
  • اینتنت فیلتر:این فیلتر تعیین می کند که چگونه اکتیویتی شما فراخوانی شود.
  • فراخوانی یک اکتیویتی:با استفاده از متدهای ()startActivityForResult و ()startActivity قابل انجام است.
  • ارسال داده به یک اکتیویتی:با استفاده از شئBundle
  • قسمت های موجود در شئ اینتنت:یک شئ اینتنت شامل قسمت های action, data, type و category است.
  • نمایش اعلانات:با استفاده از کلاس NotificationManager
  • شئ PendingIntet : این شئ به شما کمک می کند که انجام یک action را برای زمان دیگری برنامه ریزی کنید.در این زمان ممکن است برنامه شما در حال اجرا باشد و یا از حالت اجرا خارج شده باشد.
تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehiمجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامیپرداخت آنلاین -  بانک ملتمعرفی بیاموز در شبکه سهپرداخت آنلاین - بانک اقتصاد نوینپرداخت آنلاین - بانک سامان