Memahami Permisi Di Android Manifest

Memahami parameter permisi di Android manifest adalah salah satu perkara paling penting dalam membuat program android. Contoh sederhananya saja, anda ingin membuat aplikasi Client server berbasis android dan Webservice, kode sudah OK, tinggal di run, tapi tetap saja program tidak mau jalan? Coba cek  di Manifestnya, jangan jangan anda kelupaan baris ini.

 uses-permission android:name="android.permission.INTERNET"

Baris diatas adalah baris krusial yang harus di tulis manifest agar aplikasi anda bisa mengakses webservice/internet/website. Perhatikan disini, code benar saja tidak cukup, android menggunakan permisi yang harus di tulis secara ekspilist di manifestnya. Artinya, aplikasi apa pun yang membutuhkan koneksi internet harus “ijin” dulu.

User selalu bisa mereview dan melihat apa kebutuhan dari aplikasi dan apa saja yang bisa dilakukan oleh aplikasi dari permisinya. Berikut ini contoh tampilan list permisi saat kita menginstall program.

image_install
Tampilan permisi file saat aplikasi akan diinstall

Dari sini, tampak sekali bahwa android adalah platform yang aman, jadi sebaiknya anda tidak perlu menginstall antivirus di smartphone karena tidak ada manfaatnya, itu semua justru hanya akan menghabiskan batere karena antivirus terus bekerja.

Isu virus di android

Sebenarnya, isu banyaknya virus yang beredar di android hanyalah karena ada “programmer nakal” yang membuat aplikasi tertentu, namun di manifestnya menambahkan permisi yang “tidak wajar”.

Saya beri contoh sederhana. Ada sebuah aplikasi game gratis yang tampilannya  menarik, lalu anda install game tersebut tanpa anda perhatikan permisinya. Saat anda memainkan game tersebut, ternyata aplikasi itu menghabiskan pulsa karena dibelakang layar “mencuri” contact teman yang di kirim ke server Programer jahat ini, selain itu  android tiba tiba mengirimi sms ke teman anda secara acak. Inilah  salah satu “virus” yang ada di android. Coba sebelum anda install di cek dulu permisinya, kan ga bakalan hal itu terjadi.

Masalahnya, kita tidak teliti saat menginstall, harusnya setiap kali menginstall aplikasi, lihat permisinya, wajar tidak? sama seperti contoh diatas, jika sebuah game bisa membaca kontak dan mengirim email, tentu perlu dipertanyakan dan diwaspadai, karena game ini mengandung “virus”. Paham kan sekarang?

Kerja dari antivirus di Android juga tidak jauh berbeda dengan gambaran diatas, antivirus selalu mengecek permisi aplikasi yang janggal. Itu kenapa saya tidak menginstall antivirus di smartphone android. Hanya orang orang tidak cerdas dan paranoid aja yang menginstall antivirus di smartphone. Ingat, antivirus itu makan battere dan prosesor BRO! Isu virus di android juga digembar gemborkan di media oleh lawan-lawan android dan para pembuat antivirus agar produknya laku. Gimana bro? paham kan sekarang!

Tabel Permisi di manifest Android

Permisi Penjelasan
 ACCESS_COARSE_LOCATION  Mendapatkan lokasi user dari Cell tower atau wifi, sering dipakai di aplikasi Location based service
 ACCESS_FINE_LOCATION  Mendapatkan lokasi user dari GPS ,Cell tower atau wifi, sering dipakai di aplikasi Location based service
 ACCESS_NETWORK_STATE  Mengecek apakah android terkoneksi jaringan atau tidak
 CAMERA  Mengakses kamera, Wajib ada untuk aplikasi camera
 INTERNET  Mombolehkan aplikasi untuk mengakses jaringan/internet
 NFC  Membolehkan aplkasi mengakses perangkat NFC
 SEND_SMS  Aplikasi di ijinkan untuk mengirim SMS
 WRITE_EXTERNAL_STORAGE  Aplikasi di ijinkan menulis SDcard atau media penyimpan ekternal
 CALL_PHONE  Aplikasi dijinkan untuk melakukan panggilan langsung, tanpa masuk ke dialer terlebih dahulu
 WAKE_LOCK  Mencegah device ke mode sleep, intinya dengan wake lock, aplikasi memaksa Smartphone tetap bangun.
 RECEIVE_SMS  Aplikasi dibolehkan untuk memonitor sms masuk dan memprosesnya, setiap aplikasi ‘SMS replacement’ pasti memakai permisi ini.
 SET_WALLPAPER  Aplikasi dibolehkan untuk mengubah wallpaper

Permisi diatas adalah permisi yang paling sering dipakai di android, namun apakah permisi file itu cuma itu? tentu saja tidak, sampai android 4.4 ada lebih dari 100 permisi di Android. Mengapa sampai sebanyak itu? kembali ketopik bro, Biar android Aman! Selamat belajar android Bro!

Memahami Android Manifest

Setiap aplikasi android mempunyai file paling penting yang bernama AndroidManifest.xml . Android Manifest punya beberapa tugas, untuk lebih jelasnya saya akan beri contoh android manfiest dan akan saya beri penjelasan dibawahnya.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="id.web.candra.demo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" />
  <!-- mengakses  internet . -->
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="id.web.candra.demo.RegisterActivity"
            android:label="@string/app_name" >
           <intent-filter >
                  <action android:name="android.intent.action.MAIN" / >
                  <category android:name="android.intent.category.LAUNCHER" / >
             </intent-filter>
        </activity>
        <!-- Main Activity -->
        <activity
            android:name="id.web.candra.demo.MainActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/app_name" >
        </activity>

        <service android:name="id.web.candra.notifikasi" />
        <!-- - GCM END -->
    </application>

</manifest>

Paket dan versi

   package="id.web.candra.demo"
    android:versionCode="1"
    android:versionName="1.0" 

Bagian ini menjelaskan nama paket dari aplikasi, beserta versinya. Setiap manifest mempunyai dua macam versi. Yang pertama adalah versionCode versi ini harus terus berubah secara incremental, bagian ini sangat panting saat aplikasi di upload ke Google play. Versi kedua adalah VersionName. versi ini adalah versi yang terlihat oleh pengguna Misalkan Aplaksi DemoApp 0.1beta

Uses SDK

  uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" 

uses-sdk digunakan untuk mengecek minimal SDK yang bisa menjalankan aplikasi ini, sedangkan targetSDK adalah target SDK yang disarankan. Bahasa mudahnya seperti ini, aplikasi ini minimal berjalan di android API level 10 (Gingerbread) sampai Jellybean 4.2 (APi level 17).

Permisi

uses-permission android:name="android.permission.INTERNET" 

Android sebenarnya OS yang aman, setiap aplikasi android yang ingin mengakses sistem atau jaringan harus selalu ijin dengan menggunakan baris ini. Dalam contoh ini, aplikasi membutuhkan koneksi internet. Tanpa adanya baris ini, walaupun Code anda 100% benar, saya jamin aplikasi anda akan selalu gagal koneksi internet/server.

Masih banyak jenis permisi lain di android, akan say abahas setelah artikel ini.

Aplication seting

application
        android:allowBackup="true"
        android:icon="@drawable/launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 

AllowBackup artinya aplikasi anda bisa dibackup. android:icon Icon ini bernama launcher.png, yang letaknya di folder drawable atau drawable-*hdpi.

Pengaturan Activity

  <activity>
            android:name="id.web.candra.demo.RegisterActivity"
            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 dalam bahasa lain sepertei VB adalah Form Setiap activity harus terdaftar di manifest, lupa menambahkan activity dibagian ini akan menyebabkan aplikasi crash saat pemanggilan activity tersebut.

Baris intent-filter artinya saat aplikasi pertama kali dibuka, maka secara otomatis RegisterActivity yang akan muncul. Biasanya dalam satu aplikasi ada banyak activity, namun hanya ada satu yang mempunyai intent-filter

Service

Selain activity, ada komponen lain di android yang bernama Services

   service android:name="id.web.candra.notifikasi" 

Service adalah komponen aplikasi yang tidak punya antarmuka, namun selalu bekerja dibelakang layar. contoh service adalah aplikasi email yang selalu mengecek apakah ada email terbaru, contoh service yang lain adalah suara sound di game yang sedang anda mainkan. Service tidak terikat pada activity tertentu.

Selain aturan diatas, masih ada parameter lain, namun jarang digunakan. Parameter lain bisa anda lihat di http://developer.android.com/guide/topics/manifest/manifest-intro.html