본문 바로가기

Android/Notification

안드로이드 Notification 예제

http://www.vogella.com/articles/AndroidNotifications/article.html

제목 표시줄에 통지(Notification)를 표시한 예


제목 표시줄을 열고 통지를 확인하는 예


위의 통지를 이용자가 선택하면 실행되는 액티비티 화면

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="test.android.hello" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".NotificationDisplay" 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=".NotificationFollower" android:label="우편물 알림"> </activity> </application> </manifest>


result.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="우편물을 수령하실 때는 미리 전화로 알려주세요" > </TextView> </LinearLayout>


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnStart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onBtnClick"
        android:text="Notification 테스트" />
 
</LinearLayout>


제목 표시줄에 표시된 통지를 열고 통지를 선택하면 실행될 Activity

package test.android.hello; import android.app.Activity; import android.os.Bundle; public class NotificationFollower extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.result); } }


Title Bar에 통지를 표시해주는 메인 Activity

package test.android.hello; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.view.View; public class NotificationDisplay extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void onBtnClick(View view) { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "알려드립니다", System.currentTimeMillis()); // 이용자가 통지를 확인한 후에는 통지를 표시하지 않도록 설정 notification.flags |= Notification.FLAG_AUTO_CANCEL; Intent intent = new Intent(this, NotificationFollower.class); PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0); notification.setLatestEventInfo(this, "우편물 도착", "소포가 배달되어 관리실에 있습니다", activity); notification.number += 1; notificationManager.notify(0, notification); } }


위의 내용을 응용하여, 웹서버 측에서 실행되는 서버 소켓으로부터 안드로이드 시스템에서 실행되는 클라이언트 소켓으로 데이터를 전송하는 경우 Service가 백그라운드에서 실행되고 있다가 데이터가 수신되는 경우에 위의 예제처럼 제목 표시줄에 통지를 표시해주고 이용자가 제목 표시줄을 열고 해당 통지를 선택하면 보다 상세한 내용을 보여주는 Activity를 실행할 수 있다.