[Android] 통지 Android 2012. 3. 12. 15:35

통지는 다들 아실 것이다. 문자가 날아온다던지 뭐 이것 저것 알릴 때 이용된다.

샘플은 다음과 같다.

public class ImageViewActivity extends Activity {
 static final int NAPNOTI = 1;
    NotificationManager mNotiManager;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        Button btn = (Button)findViewById(R.id.call);
        btn.setOnClickListener(new Button.OnClickListener() {
         public void onClick(View v) {
          Toast.makeText(ImageViewActivity.this, "눌러보세요", 0).show();
          v.postDelayed(new Runnable() {
     public void run() {
         Notification noti = new Notification(R.drawable.ic_launcher,
           "확인하세요",System.currentTimeMillis());
         noti.defaults |= Notification.DEFAULT_SOUND;
         // 진동 사용
         //noti.defaults |= (Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
         // 커스텀 진동
         //noti.vibrate = new long[] {1000,1000,500,500,200,200,200,200,200,200};
         noti.flags |= Notification.FLAG_INSISTENT;
         
         Intent intent = new Intent(ImageViewActivity.this, check.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         PendingIntent content = PendingIntent.getActivity(
           ImageViewActivity.this, 0, intent, 0);
         noti.setLatestEventInfo(ImageViewActivity.this, "확인",
           "확인했음?", content);
         NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
         manager.notify(1, noti);
     }
          }, 5 * 1000);
         }
        });       
    }
}

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
        NotificationManager mNotiManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        mNotiManager.cancel(ImageViewActivity.NAPNOTI);
        Button btn = (Button)findViewById(R.id.call1);
        btn.setOnClickListener(new Button.OnClickListener() {
         public void onClick(View v) {
          finish();
        }});       
    }

여기에서 보면 알림 매니저에 의해 등록되고 인텐드 한 것이 호출 됨을 알 수 있다. 하지만 호출 할 때 매니페스트에 반드시 호출 할 대상을 지정 해 두는 것을 잊지 말자.