1. Membuat Android Application Project...

15
PAPB-C Julian Sitoajie Satrio - 115060807111132 User Notification adalah pesan yang diterima oleh user yang tidak muncul dalam user interface utama tapi ada dalam bentuk icon dan dengan detail notifikasinya dalam notification area. Tujuan dari munculnya user notification adalah agar user tetap mengetahui event atau alert atau pesan yang masuk yang bisa user lihat kapan saja tanpa perlu keluar dari aplikasi yang sedang dibuka sekarang. Pada tutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama notifikasi dengan view normal menggunakan explicit intent dan yang kedua dengan view besar menggunakan implicit intent. Yang harus dipersiapkan: 1. Eclipse 2. AVD/GenieMotion 3. JDK 1.7 1. Membuat Android Application Project Baru Buka Eclipse IDE. Klik File – New – Project – Android Application Project. Isi nama aplikasi, project, packagenya, dll. Klik Next. Untuk window berikutnya pilih Next saja karena digunakan pengaturan default.

Transcript of 1. Membuat Android Application Project...

Page 1: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

User Notification adalah pesan yang diterima oleh user yang tidak muncul dalam user interface utama

tapi ada dalam bentuk icon dan dengan detail notifikasinya dalam notification area. Tujuan dari

munculnya user notification adalah agar user tetap mengetahui event atau alert atau pesan yang masuk

yang bisa user lihat kapan saja tanpa perlu keluar dari aplikasi yang sedang dibuka sekarang. Pada

tutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama notifikasi dengan view

normal menggunakan explicit intent dan yang kedua dengan view besar menggunakan implicit intent.

Yang harus dipersiapkan:

1. Eclipse

2. AVD/GenieMotion

3. JDK 1.7

1. Membuat Android Application Project Baru

Buka Eclipse IDE. Klik File – New – Project – Android Application Project. Isi nama aplikasi, project,

packagenya, dll. Klik Next. Untuk window berikutnya pilih Next saja karena digunakan pengaturan

default.

Page 2: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

Page 3: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

Page 4: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

2. Membuat Layout pada Main Activity

Untuk membuat dua tipe notifikasi yang berbeda, kita membutuhkan dua tombol yang masing-masing

berbeda fungsi.

Buka file res/layout/activity_main.xml lalu paste kode berikut:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="papb.notificationtest.MainActivity" >

<Button

android:id="@+id/notificationOne"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Munculkan Notifikasi Satu" />

<Button

android:id="@+id/notificationTwo"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentTop="true"

android:layout_marginTop="60dp"

android:text="Munculkan Notifikasi Dua" />

</RelativeLayout>

3. Mengisi code pada Main Activity

Untuk membuat layout dan mengontrol action dari notifikasi digunakan objek

NotificationCompat.Builder. Setiap objek Notification harus mempunyai:

Icon kecil

Judul Notifikasi

Teks detail

Untuk itu perlu diset setSmallIcon(), setContentTitle(), dan setContentText(). Masih banyak juga layout

content yang bisa digunakan di notifikasi, namun sifatnya opsional. Untuk tampilan notifikasi besar atau

Big View Notification, kecuali konten dari view normal, harus ditambahkan Builder.setStyle().

Action notifikasi menghubungkan notifikasi dengan aktivitas dalam aplikasi, saat user mengklik notifikasi

itu. Notifikasi itu bisa menyediakan beberapa action, tapi minimal satu yang harus ditambahkan, walau

pun itu opsional. Untuk mendefinisikan action, kita menggunakan PentingIntent, yang berisi Intent yang

memulai aktivitas pada Aplikasi.

Page 5: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

Pada aplikasi yang kita buat, pertama Explicit Intent, akan digunakan method cancel(notificationId) jadi

notifikasi akan hilang saat aktivitas ditampilkan. Yang kedua adalah Implicit Intent, digunakan method

setAutoCancel() yang akan berfungsi saat user mengklik notifikasi.

Buka file src/papb.notificationtest/MainActivity.java dan paste kode berikut ini.

package papb.notificationtest;

import android.net.Uri;

import android.os.Bundle;

import android.app.Activity;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.app.TaskStackBuilder;

import android.content.Context;

import android.content.Intent;

import android.support.v4.app.NotificationCompat;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity {

private NotificationManager myNotificationManager;

private int notificationIdOne = 111;

private int notificationIdTwo = 112;

private int numMessagesOne = 0;

private int numMessagesTwo = 0;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button notOneBtn = (Button) findViewById(R.id.notificationOne);

notOneBtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

displayNotificationOne();

}

});

Button notTwoBtn = (Button) findViewById(R.id.notificationTwo);

notTwoBtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

displayNotificationTwo();

}

});

}

protected void displayNotificationOne() {

// Invoking the default notification service

NotificationCompat.Builder mBuilder = new

NotificationCompat.Builder(this);

mBuilder.setContentTitle("Pesan baru");

mBuilder.setContentText("klik untuk melihat pesan");

mBuilder.setTicker("Explicit: Menerima Pesan Baru!");

Page 6: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

mBuilder.setSmallIcon(R.drawable.ic_launcher);

// Increase notification number every time a new notification arrives

mBuilder.setNumber(++numMessagesOne);

// Creates an explicit intent for an Activity in your app

Intent resultIntent = new Intent(this, NotificationOne.class);

resultIntent.putExtra("notificationId", notificationIdOne);

//This ensures that navigating backward from the Activity leads out of

the app to Home page

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

// Adds the back stack for the Intent

stackBuilder.addParentStack(NotificationOne.class);

// Adds the Intent that starts the Activity to the top of the stack

stackBuilder.addNextIntent(resultIntent);

PendingIntent resultPendingIntent =

stackBuilder.getPendingIntent(

0,

PendingIntent.FLAG_ONE_SHOT //can only be used once

);

// start the activity when the user clicks the notification text

mBuilder.setContentIntent(resultPendingIntent);

myNotificationManager = (NotificationManager)

getSystemService(Context.NOTIFICATION_SERVICE);

// pass the Notification object to the system

myNotificationManager.notify(notificationIdOne, mBuilder.build());

}

protected void displayNotificationTwo() {

// Invoking the default notification service

NotificationCompat.Builder mBuilder = new

NotificationCompat.Builder(this);

mBuilder.setContentTitle("Pesan Baru!");

mBuilder.setContentText("Klik untuk melihat pesan");

mBuilder.setTicker("Implicit: Menerima Pesan Baru!");

mBuilder.setSmallIcon(R.drawable.ic_launcher);

NotificationCompat.InboxStyle inboxStyle = new

NotificationCompat.InboxStyle();

String[] events = new String[3];

events[0] = new String("1) Pesan implisit intent");

events[1] = new String("2) Notifikasi besar");

events[2] = new String("3) Julian - 115060807111132");

// Sets a title for the Inbox style big view

inboxStyle.setBigContentTitle("More Details:");

// Moves events into the big view

for (int i=0; i < events.length; i++) {

inboxStyle.addLine(events[i]);

}

Page 7: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

mBuilder.setStyle(inboxStyle);

// Increase notification number every time a new notification arrives

mBuilder.setNumber(++numMessagesTwo);

// When the user presses the notification, it is auto-removed

mBuilder.setAutoCancel(true);

// Creates an implicit intent

Intent resultIntent = new

Intent("com.example.javacodegeeks.TEL_INTENT",

Uri.parse("tel:115060807111132"));

resultIntent.putExtra("from", "javacodegeeks");

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

stackBuilder.addParentStack(NotificationTwo.class);

stackBuilder.addNextIntent(resultIntent);

PendingIntent resultPendingIntent =

stackBuilder.getPendingIntent(

0,

PendingIntent.FLAG_ONE_SHOT

);

mBuilder.setContentIntent(resultPendingIntent);

myNotificationManager = (NotificationManager)

getSystemService(Context.NOTIFICATION_SERVICE);

myNotificationManager.notify(notificationIdTwo, mBuilder.build());

}

}

4. Membuat Activity dari Action Notifikasi

Kita ingin membuat aktivitas dari notifikasi, yang akan dimulai saat user mengklik notifikasi.

Di sini kita akan membuat dua aktivitas berbeda untuk setiap notifikasi, jadi kita harus mebuat file

berbeda.

Untuk file pertama yang memakai explicit intent, klik kanan pada package src/papb.notificationtest/ -

New – Class.

Isi nama dari Class dan tekan Finish.

Page 8: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

Buka src/papb.notificationtest/NotificationOne.java dan paste kode berikut.

NotificationOne.java:

package papb.notificationtest;

import android.os.Bundle;

import android.widget.TextView;

import android.app.Activity;

import android.app.NotificationManager;

import android.content.Context;

public class NotificationOne extends Activity {

@Override

public void onCreate(Bundle savedInstanceState)

{

Page 9: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

super.onCreate(savedInstanceState);

setContentView(R.layout.notification_one);

CharSequence s = "Isi notifikasi satu ";

int id=0;

Bundle extras = getIntent().getExtras();

if (extras == null) {

s = "error";

}

else {

id = extras.getInt("notificationId");

}

TextView t = (TextView) findViewById(R.id.text1);

s = s+"adalah = "+id;

t.setText(s);

NotificationManager myNotificationManager =

(NotificationManager)

getSystemService(Context.NOTIFICATION_SERVICE);

// remove the notification with the specific id

myNotificationManager.cancel(id);

}

}

Untuk Implicit Intent, kita akan memakai prosedur yang sama seperti diatas untuk membuat Class. Klik

kanan package src/papb.notificationtest – New – Class. Isi nama kelas dan tekan finish. Untuk Class

kedua bisa dinamakan NotificationTwo.java.

Sekarang, buka dan src/papb.notificationtest/NotificationTwo.java dan paste kode berikut.

NotificationTwo.java:

package papb.notificationtest;

import android.app.Activity;

import android.net.Uri;

import android.os.Bundle;

import android.widget.TextView;

public class NotificationTwo extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Page 10: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

setContentView(R.layout.notification_two);

String output = "Isi notifikasi dua adalah ";

TextView dataIntent = (TextView) findViewById(R.id.text2);

// take the data and the extras of the intent

Uri url = getIntent().getData();

Bundle extras = getIntent().getExtras();

output = output + url.toString();

// if there are extras, add them to the output string

if(extras != null){

output = output + " from " +extras.getString("from");

}

dataIntent.setText(output);

}

}

Pada kode diatas kita tidak usah melakukan apa-apa untuk meng-cancel notifikasi karena kita sudah

dilakukan pada fungsi displayNotificationTwo() pada file MainActivity.java, dengan method

setAutocancel().

5. Membuat Layout dari Action Notifikasi

Selanjutnya, kita perlu membuat layout yang akan ditampilkan saat aktivitas dari setiap notifikasi mulai

berjalan.

Untuk NotificationOne.java kita akan menggunakan layout notification_one seperti yang didefinisikan

pada file. Untuk membuatnya, klik kanan pada res/layout – New – Android XML File. Isi nama dan pilih

linear layout sebagai root element.

Page 11: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

Lalu buka file res/layout/notification_one.xml pada xml tab dan paste kode berikut.

Notification_one.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" >

<TextView

android:id="@+id/text1"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

</LinearLayout>

Dengan cara yang sama, buatlah layout untuk file notification_two.java.

Setelah itu buka file res/layout/notification_two.xml pada xml tab dan paste kode berikut.

Notification_two.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Page 12: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/text2"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

</LinearLayout>

6. Mendefinisikan Rules untuk Notification Activity

Pada step ini kita akan menggunakan elemen <meta-data>, yang bertujuan untuk mendefinisikan parent

dari aktivitas NotificationOne dan NotificationTwo. Element <meta-data> merupakan data tambahan,

yang mana bisa menyediakan komponen parent. Jadi kita akan mengisi elemen ini dengan value yang

sesuai. Karenanya, kita akan menaruh android.support.PARENT_ACTIVITY ke dalam android:name, dan

dalam android:value kita akan menaruh nama dari aktivitas parent. Kita juga harus mendefinisikan rules

untuk Implicit Intent yang kita gunakan dalam element aktivitas yang sesuai.

Buka file AndroidManifest.xml dan pilih tab xml. Kemudian paste kode berikut.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="papb.notificationtest"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="17"

android:targetSdkVersion="19" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="papb.notificationtest.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=".NotificationOne"

android:label="Details of Notification One"

android:parentActivityName=".MainActivity">

<meta-data

android:name="android.support.PARENT_ACTIVITY"

Page 13: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

android:value=".MainActivity"/>

</activity>

<activity

android:name=".NotificationTwo"

android:label="Details of Notification Two"

android:parentActivityName=".MainActivity">

<intent-filter>

<action android:name="com.example.javacodegeeks.TEL_INTENT" />

<category android:name="android.intent.category.DEFAULT" />

<data android:scheme="tel" />

</intent-filter>

<meta-data

android:name="android.support.PARENT_ACTIVITY"

android:value=".MainActivity"/>

</activity>

</application>

</manifest>

7. Menjalankan Aplikasi

Jika kalian dapat mengikuti step-stepnya dari awal sampai akhir tanpa ada error. Congrats! Aplikasi siap

dijalankan!

Untuk menjalankan aplikasi kita, klik kanan pada project kita – Run As – Android Application.

Saat kita menekan tombol “Munculkan Notifikasi Satu”, notifikasi baru akan dibuat dan muncul ticker

notifikasi.

Kalo kita men-drag bagian atas layar dan pergi ke notification drawer, kita akan melihat tampilan normal

dari notification seperti yang ditunjukkan gambar di bawah ini.

Page 14: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132

Jika user menekan notifikasi, maka activity NotificationOne akan dipanggil dan notifikasi akan

dihilangkan dari notification bar. Di sana juga ada tombol untuk kembali ke MainActivity.

Sekarang, tekan tombol “Munculkan Notifikasi Dua” makan notifikasi yang akan muncul seperti gambar

di bawah ini.

Jika kita menekannya, notifikasi akan dihilangkan karena method setAutoCancel dan Activity

NotificationTwo akan dipanggil.

Page 15: 1. Membuat Android Application Project Barublog.ub.ac.id/julsit/files/2014/11/PAPB-C-03-115060807111132.pdftutorial ini, kita akan membuat dua notifikasi yang berbeda. Yang pertama

PAPB-C

Julian Sitoajie Satrio - 115060807111132