Tuesday, 12 September 2017

File Manifest Android

Tiap aplikasi android hanya memiliki satu file manifest (AndroidManifest.xml). File manifest berisi semua informasi penting terkait aplikasi. File manifest menjelaskan struktur aplikasi seperti nama, versi, komponen yang digunakan (Activity, Service, dan Broadcast Receiver), daftar intent yang ditangani, izin yang diminta, dan fitur hardware yang dibutuhkan. File manifest terdiri dari beragam tag yang masing - masing punya kegunaan. berikut daftar tag dalam file manifest yang paling sering digunakan.
 

<manifest xmlnx:android="http://schemas.android.com/apk/res/android"
 package="com.araysama.demo.helloworld"
 android:versionCode=”1”
 android:versionName="1.0">

 <uses-sdk
  android:minSdkVersion="8"
  android:targetSdkVersion="15" />

 <application
  android:icon="@drawable/ic_launcher"
  android:label="@string/app_name"
  android:theme="@style/AppTheme">
  <activity
   android:name=".HelloActivity"
   android:label="@string/title_Activity_hello">
   <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
 </application>
</manifest>

a.     <manifest>
    Tag <manifest> adalah tag terluar yang menyusun AndroidManifest.xml. Atribut penting dalam tag ini adalah package yang berisi nama package bersangkutan dimana aplikasi berada. Atribut lain yang disematkan adalah versi aplikasi, 
     yakni android:versionCode dan android:versionName masing -  masing adala nilai integer kode versi dan string berisi versi aplikasi dalam teks. Keduanya digunakan untuk membedakan versi rilis aplikasi.

b.     <uses-sdk>
     Tag <uses-sdk> digunakan untuk mengatur versi Android API yang digunakan aplikasi. Atribut yang dapat digunakan adalah
       
     Item  
      Keterangan
     android:minSdkVersion
      Api level minimum yang diperlukan aplikasi.

    Contoh, aplikasi anda membutuhkan pustaka OpenGL ES 2.0 untuk bekerja. Karena pustaka OpenGL ES 2.0 baru tersedia di API level 8 (Android Froyo), maka atribut ini wajib anda isi dengan 8.

    Aplikasi anda hanya dapat diinstal pada piranti dengan versi Android API level 8 atau lebih baru.
     android:targetSdkVersion
     Veris API level yang digunakan saat build.

    Atribut ini menentukan beberapa fitur yang tersedia bagi aplikasi anda. Umumnya, atribut ini diisi dengan versi API terbaru yang ada dikomputer, yang digunakan untuk mengembangkan aplikasi.

     Contoh, jika aplikasi anda menggunakan target API level 11, maka fitur Fragment dapat anda gunakan saat menulis program. Bila minSdKVersion lebih kecil dari targetSdKVersion dan aplikasi menggunakan fitur yang hanya tersedia pada API level yang lebih baru disbanding minSdKVersion. Aplikasi dapat memanfaatkan pustaka dukungan kompatibilitas. Jadi, aplikasi tetap dapat dijalankan menggunakan fitur Fragment meskipun diinstal Android Froyo karena fitur tersebut akan disertakan bersama file pustaka tambahan
     android:maxSdkVersion
      API level maksimum yang digunakan.

    Umumnya, aplikasi tidak boleh membatasi versi android terbaru yang boleh diinstal karena bersifat backward-compatible. Aplikasi yang anda tulis untuk android Froyo dapat dijalankan tanpa perlu modifikasi di android KitKat. Namun, ada saat dimana anda tidak ingin aplikasi diinstal di API level baru yang belum diuji.

c.     <uses-feature>
    Tag <uses-feature>digunakan untuk memberitahu android fitur hardware mana yang diperlukan aplikasi. Tag ini dapat mencegah aplikasi diinstal pada piranti yang tidak memiliki hardware yang diperlukan. contohnya, aplikasi editor gambar kamera yang hanya bekerja bila piranti memiliki kamera yang dapat menggunakan android.hardware.camera. piranti bergerak yang tidak memiliki kamera tidak akan menginstal aplikasi anda.
 

<uses-feature android:name="android.hardware.camera"/>

d.     <uses-permission>
  Tag <uses-permission>digunakan untuk menentukan izin yang diminta ole aplikasi. Contohnya apabila aplikasi membutuhkan akses internet untuk bekerja, maka anda wajib menyertakan android.permission.INTERNET pada atribut android:name
 

<uses-permission android:name="android.permission.INTERNET" />

     Tiap - tiap izin yang aplikasi anda perlukan akan diberitahhukan kepada pengguna. Bila pengguna setuju semua izin diminta, aplikasi baru dapat diinstal.


e.     <application>
  Dalam Tag <manifest> hanya boleh mengandung sebuah tag <application>. Tag ini digunakan untuk mengatur informasi aplikasi seperti nama dan ikon yang digunakan.

<application
    android:icon="@drawable/app_icon"
    android:logo="@drawable/app_logo"
    android:thema="@android:style/Theme.Light"
    android:name=".MyApplicationClass">
....
<application
  Tag <application> juga merupakan pembungkus daftar komponen yang ada didalam aplikasi seperti activity yang digunakan, Broadcast Receiver, Service, dan Content Provider bila ada.

f.     <activity>
      Deklarasi Activity menggunakan tag <activity> dan harus berada dalam tag <application>. Tiap Activity yang gunakan adalam aplikasi wajib didaftarkan dalam manifest. Menjalankan Activity yang tidak tercantum dalam manifest akan menyebabkan pesan kesalahan (runtime exception) dibangkitkan . Tag <activity> harus disematkan sebuah atribut wajib atau android:name yang diisi dengan nama kelas Activity. nama ini dapat berupa nama kelas lengkap dengan nama package seperti com.araysama.demo.helloworld.MyActivity atau nama singkat .MyActivity. Penggunaan nama singkat diawali karakter titik berarti memerintahkan android untuk mencari kelas MyActivity dalam package yang namanya tercantum dalam atribut package pada tag <manifest> dalam hal ini com.araysama.demo.helloworld. Atribut android:label akan digunakan sebagai judul Activity.
 
<application>
 <activity
   android:name=".MyActivity"
   android:label="@string/app_name"
   <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
   </activity>
   </application>
        Tag <uses-feature> bertindak sebagai pembungkus tag <intent-filter>

g.    <receiver>
    Tag<receiver>harus diletakkan didalam tag <appication> dan digunakan untuk mendaftarkan Broadcast Receiver. Atribyt wajib tag ini adalah android.name yang berisi nama kelasa Broadcast Receiver. Nama kelas dapat berupa nama lengkap beserta nam package maupun nama singkat diawali karakter titik. Dalam tag <receiver> harus disertakan tag <intent-filter> yang menentukan intent apa yang dapat direspons oleh Broadcast Receiver ini.
 
<receiver android:name=".MyIntentReceiver">
  <intent-filter>
     <action android:name="com.araysama.broadcastaction" />
   </intent-filter>
   </receiver>
h.    <service>
     Tag<service>mendaftarkan Service dalam manifest. Atribut yang wajib ada adalah android:name berisi nama kelas service lengkap atau nama singkat diawalai karakter titik.
 
<service android:name=".MyService">
  </service>
i.    <provider>
    Tag<sprovider>harus berada dalam tag <application> dan digunakan untuk mendaftarkan Content Provider
 
<provider android:name".MyContentProvider"
     android:authorities="com.araysama.myapp.MyContentProvider"/>
j.    <intent-filter>
    Tag ini menentukan daftar intent yang dapat direspons oleh activity, Broadcast Receiver, atau Service dalam tag ini harus ada paling tidak satu tag <action> yang merupakan aksi yang dapat dijalankan .Tag <action> mengharapkan atribut wajib android:name berisi nama aksi yang dapat direspons. Tag<category> digunakan untuk mengelompokkan Intent berdasarkan kategori tertentu.

Monday, 11 September 2017

Penyusun Intent

a.      Nama Komponen
Komponen mengacu pada definisi lengkap target. Intent, yang memiliki nama komponen adalah intent eksplisit, bila sebaliknya, disebut Intent implisit. Nama kelas meliputi nama paket dan nama kelas. Contoh, jika anda bermaksud menjalankan kelas SecondActivity dari dalam komponen yang berada dipaket lain, anda wajib menyertakan nama lengkapnya, misalnya com.blabla.demo.intent1.SecondActivity.class. Bila komponen yang saling berinteraksi berada dalam satu paket, anda dapat mengabaikan nama paket. Contoh FirstActivity dan SecondActivity berada dalam satu paket bernama com.blabla.demo.intent1, maka anda cukup menggunakan nama SecondActivity.class.

b.      Aksi
Aksi mendeskripsikan aksi yang diminta. Berikut beberapa aksi yang sudah terdefinisi:
·        ACTION_DIAL, untuk menampilkan tombol dial untuk melakukan panggilan.
·         ACTION_CALL, untuk melakukan panggilan telepon
·         ACTION_MAIN, untuk menjalankan Activity utama aplikasi
·         ACTION_SEND, untuk berbagi data

c.       Data
Data masih berkaitan dengan aksi yang akan dijalankan. Tiap aksi membutuhkan sesuatu untuk diolah (data untuk digunakan atau diubah) dan tiap data butuh aksi yang akan dikerjakan. Oleh sebab itu, aksi dan data saling terkait. Data disimpan sebagai URI (Uniform Resource Identifier) dengan susunan <scheme>://<host>:<port>/<path>.

d.      Jenis Data (MIME)
MIME (Multipurpose Internet Mail Extensions) adalah default yang digunakan sebagai klasifikasi data. Awalnya, MIME digunakan untuk mendeskripsikan jenis data yang disisipkan dipesan email (Attachment). Namun kemudian, penggunaannyayang lebih luas mulai diadopsi, termasuk di Android. Contoh tipe MIME untuk gambar foto berformat JPG adalah Image/jpeg, dan tipe MIME data music MP3 adalah audio/mp3.

e.       Kategori
Kategori adalah informasi tambahan yang berisi kelompok Intent yang seharusnya menangani intent tersebut. Contoh :
·         CATEGORY_DEFAULT
·         CATEGORY_LAUNCHER
·         CATEGORY_BROWSABLE
·         CATEGORY_CAR_DOCK

f.       Ekstra
Field ini berupa pasangan key-value yang dapat digunakan untuk menyimpan data tambahan seperti string, integer, Boolean, atau lainnya. Untuk menyimpan data tambahan ke intent, gunakan metode putExtra() milik tipe intent.

g.      Flag

Flag adalah informasi opsional berisi nilai Boolean yang dapat digunakan, misalnya menginstruksikan Android ketika menjalankan Activity.

Intent Pada Pemrograman Android

Dalam Pemrograman Android intent digunakan untuk mendeskripsikan aksi yang akan dikerjakan atau kejadian yang telah terjadi. Pada dasarnya, intent adalah pesan yang mengatakan bahwa anda telah atau ingin melakukan sesuatu. Tergantung jenisnya, aplikasi atau android mungkin memantau dan bereaksi sesuai intent tersebut.

Misalkan anda mengirim email dalam jumlah banyak ke semua alamat. Isinya berupa permintaan untuk melakukan sesuatu untuk anda, misalnya memperbaiki tembok rumah yang rusak. Sebagian besar teman mungkin akan mengabaikan email tersebut karena tidak paham dengan urusan perbaikan rumah. Namun, joko yang ahli memperbaiki tembok, mungkin dapat melakukan permintaan anda.

Intent adalah mekanisme alur navigasi dari satu Activity ke Activity lain. Contoh, aplikasi mewajibkan user untuk login sebelum mengakses fitur yang disediakan. Bila belum login, user diberikan layar yang menampilkan dialog untuk login (LoginDialogActivity). Bila cocok, alur navigasi diarahkan ke MainActivity, bila tidak, navigasi diarahkan kembali ke LoginDialogActivity dengan pesan eror.
Masing – masing Activity memiliki tugas yang spesifik dan sederhana. LoginDialogActivity hanya bertugas menampilkan UI login dialog dan pesan eror login bila ada. CredentialCheckActivity hanya bertugas mencocokkan username dengan catatan yang tersimpan diaplikasi.


Intent  menyediakan mekanisme pertukaran data antar Activity atau dengan aplikasi lain CredentialCheckActivity gagal melakukan pencocokan username dan password untuk melakukan tugasnya. Data ini disediakan oleh LoginDialogActivity yang bertugas menerima input dari user pada proses ini jelas membutuhkan mekanisme pertukaran data.

Komponen Aplikasi Android

Aplikasi android ditulis dengan bahasa pemrograman java. Semua file kode intermediate dan asset disatukan dalam satu paket berupa file berekstensi .APK, sebuah file yang dapat didistribusi. Tiap file .APK adalah sebuah aplikasi tunggal. Komponen aplikasi Android terdri dari beberapa jenis, antara lain:

a.      Activity
Activity adalah istilah yang digunakan dalam pemrograman Android untuk mengacu pada satuan interaksi dengan pengguna melalui antarmuka grafis (GUI). Sebagai satuan interaksi , Activity adalah tampilan yang anda lihat dilayar seperti windows atau dialog pada pemrograman aplikasi desktop. Tiap aplikasi dapat terdiri dari nol atau lebih activity. Selain sebagai satuan interaksi dengan pengguna, Activity juga satuan eksekusi. Sebagai satuan eksekusi, Activity selalu memiliki paling tidak satu buah thread, yakni thread utama yang digunakan untuk memperbarui tampilan user-interface (UI Thread).

b.      Intent
Intent adalah isitilah yang digunakan dalam pemrograman Android untuk mengacu pada mekanisme berbagi pesan pemberitahuan atau bertukar data Activity atau untuk menjalankan aplikasi lain.

c.       Service
Service adalah komponen aplikasi yang berjalan dibelakang layar tanpa user-interface untuk menyediakan layanan tertentu seperti mengecek RSS feed secara continue. Service tetap berjalan meski Activity mengendalikannya telah berhenti. Media player adalah sebuah contoh aplikasi yang menggunakan Service.

d.      Content Provider
Content Provider membuat suatu aplikasi dapat berbagi sejumlah data tertentu kepada aplikasi lain. Jika membutuhkan data nama – nama kontak, aplikasi anda tinggal meminta data tersebut.

e.       Broadcast Receiver
Broadcast Receiver adalah komponen yang memantau, menerima, dan bereaksi terhadap pesan yang disebarkan, baik oleh system maupun aplikasi lain. Misalnya, ketika baterai lemah, Android akan mengirim pesan “baterai lemah” kepada semua broadcast receiver yang ingin diberitahu pesan ini. Untuk menggunakan receiver, melengkapi metode onReceiver(), dan mendaftarkannya di AndroidManifest.xml atau dengan metode Conten.registerReceiver(). Instance broadcast receiver hanya valid selama pemanggilan metode onReceiver() sehingga anda tidak boleh menyimpan referensi ke instance ini. Satu hal yang dapat anda lakukan ketika onReceiver() dipanggil adalah mewakilkannya kekomponen lain, misalnya dengan memanggil metode startActivity() atau startService() milik Context.

File Manifest Android

Tiap aplikasi android hanya memiliki satu file manifest ( AndroidManifest.xml ). File manifest berisi semua informasi penting terkait aplik...