Monday, December 3, 2018

Aplikasi yang Menargetkan API Level 28+

Android 9 (API level 28) memperkenalkan banyak perubahan pada sistem Android. Perubahan perilaku berikut berlaku eksklusif pada aplikasi yang menargetkan API level 28 atau yang lebih tinggi. Aplikasi yang menyetel targetSdkVersion ke API level 28 atau yang lebih tinggi harus memodifikasi aplikasi mereka untuk mendukung perilaku ini dengan benar, bila memungkinkan pada aplikasi tersebut.
Untuk perubahan yang memengaruhi semua aplikasi yang berjalan pada Android 9, API level apa pun yang ditargetkannya, lihat Perubahan perilaku: semua aplikasi.

Layanan Latar Depan

Aplikasi yang menargetkan Android 9 atau yang lebih tinggi dan menggunakan layanan latar depan harus meminta izin FOREGROUND_SERVICE . Ini adalah izin normal, jadi sistem secara otomatis memberikannya ke aplikasi yang meminta.
Bila aplikasi yang menargetkan Android 9 atau yang lebih tinggi berupaya membuat layanan latar depan tanpa meminta FOREGROUND_SERVICE, sistem akan memunculkan SecurityException.

Perubahan privasi

Bila aplikasi Anda menargetkan Android 9, Anda harus selalu mengingat perubahan perilaku berikut. Update serial perangkat dan informasi DNS ini meningkatkan privasi pengguna.

Penghentian penggunaan nomor seri build

Dalam Android 9, Build.SERIAL selalu disetel ke "UNKNOWN" untuk melindungi privasi pengguna.
Bila aplikasi Anda perlu mengakses nomor seri hardware perangkat, sebagai gantinya Anda harus meminta izin READ_PHONE_STATE , kemudian memanggil getSerial().

Privasi DNS

Aplikasi yang menargetkan Android 9 harus menerima API DNS pribadi. Secara khusus, aplikasi harus memastikan bahwa, jika system resolver menggunakan DNS-daripada-TLS, setiap klien DNS bawaan harus menggunakan DNS dienkripsi ke hostname yang sama dengan sistem, atau dinonaktifkan demi system resolver.

Perubahan keamanan framework

Android 9 menyertakan beberapa perubahan perilaku yang meningkatkan keamanan aplikasi Anda, tetapi perubahan ini hanya berlaku bila aplikasi Anda menargetkan API level 28 atau yang lebih tinggi.

TLS jaringan diaktifkan secara default

Jika aplikasi Anda menargetkan Android 9 atau yang lebih tinggi, metode isCleartextTrafficPermitted() akan menampillkan false secara default. Jika aplikasi Anda perlu mengaktifkan cleartext bagi domain tertentu, Anda harus menyetel secara eksplisit cleartextTrafficPermitted ke true untuk domain itu dalam Konfigurasi Keamanan Jaringan aplikasi Anda.

Direktori data berbasis web dipisahkan oleh proses

Untuk meningkatkan stabilitas aplikasi dan integritas data di Android 9, aplikasi tidak bisa berbagi satu direktori data WebView di antara banyak proses. Biasanya, direktori data tersebut menyimpan cookie, cache HTTP, serta penyimpanan tetap dan sementara yang berkaitan dengan browsing web.
Umumnya, aplikasi Anda harus menggunakan class dari package android.webkit, seperti WebView dan CookieManager, di satu proses saja. Misalnya, Anda harus memindah semua objek Activity yang menggunakan WebView ke dalam proses yang sama. Anda bisa memberlakukan lebih ketat aturan "hanya satu proses" dengan memanggil disableWebView() dalam proses lain milik aplikasi Anda. Panggilan ini mencegah WebView dari dilakukannya inisialisasi dalam proses lain itu secara tidak sengaja, bahkan jika dipanggil dari library yang dependen.
Jika aplikasi Anda harus menggunakan instance WebView dalam lebih dari satu proses, Anda harus memberikan akhiran direktori data yang unik bagi setiap proses, dengan menggunakan metode WebView.setDataDirectorySuffix() , sebelum menggunakan instance WebView yang diberikan dalam proses itu. Metode ini menempatkan data web dari setiap proses dalam direktorinya sendiri yang berada dalam direktori data aplikasi Anda.
Catatan: Bahkan jika Anda menggunakan setDataDirectorySuffix(), sistem tidak akan berbagi cookie dan data web lainnya di semua batas proses aplikasi Anda. Jika beberapa proses di aplikasi Anda membutuhkan akses ke data web yang sama, Anda perlu menyalinnya sendiri di antara proses-proses itu. Misalnya, Anda bisa memanggil getCookie() dan setCookie() untuk mentransfer data cookie secara manual dari satu proses ke proses lainnya.

Domain SELinux per aplikasi

Aplikasi yang menargetkan Android 9 atau yang lebih tinggi tidak bisa berbagi data dengan aplikasi lain menggunakan izin Unix yang dapat diakses bebas. Perubahan ini meningkatkan integritas Android Application Sandbox, khususnya persyaratan bahwa data pribadi aplikasi hanya bisa diakses oleh aplikasi itu.
Untuk berbagi file dengan aplikasi lain, gunakan penyedia konten.

Perubahan konektivitas

Penghitungan data konektivitas dan multipath

Dalam aplikasi yang menargetkan Android 9 atau yang lebih tinggi, sistem menghitung traffic jaringan pada jaringan yang bukan merupakan setelan default saat ini—seperti traffic seluler ketika perangkat berada dalam Wi-Fi—dan menyediakan metode dalam class NetworkStatsManager untuk melakukan kueri lalu lintas tersebut.
Secara khusus, sekarang getMultipathPreference() menunjukkan nilai berdasarkan traffic jaringan yang disebutkan tadi. Mulai Android 9, metode menunjukkan true untuk data seluler, tetapi ketika jumlah traffic yang terakumulasi melebihi batas tertentu dalam sehari, ia mulai menunjukkan false. Aplikasi yang berjalan di Android 9 harus memanggil metode dan menerima petunjuk ini.
Class ConnectivityManager.NetworkCallback sekarang mengirimkan informasi tentang VPN ke aplikasi. Perubahan ini mempermudah aplikasi untuk mendengarkan event konektivitas tanpa harus mencampur panggilan bersamaan dan tidak bersamaan serta menggunakan API terbatas. Selain itu, ini berarti bahwa transfer informasi berfungsi seperti yang diharapkan ketika perangkat terhubung ke beberapa jaringan Wi-Fi atau ke beberapa jaringan seluler secara bersamaan.

Penghentian pemakaian klien HTTP Apache

Dengan Android 6.0, kami menghapus dukungan untuk klien HTTP Apache. Mulai Android 9, library tersebut dihapus dari bootclasspath dan secara default tidak tersedia bagi aplikasi.
Untuk terus menggunakan klien HTTP Apache, aplikasi yang menargetkan Android 9 dan di atasnya bisa menambahkan kode berikut ke AndroidManifest.xml:

<uses-library android:name="org.apache.http.legacy" android:required="false"/>
 
Catatan: Atribut android:required="false" diperlukan untuk aplikasi yang memiliki SDK minimal 23 atau lebih rendah, karena pada perangkat dengan API level yang lebih rendah dari 24, library org.apache.http.legacy tidak tersedia. (Pada perangkat tersebut, class HTTP Apache tersedia di bootclasspath.)
Sebagai alternatif menggunakan waktu proses library Apache, aplikasi bisa memaketkan versi library org.apache.http mereka sendiri di APK. Bila melakukan hal ini, Anda harus mengemas ulang library (dengan utilitas seperti Jar Jar) untuk menghindari masalah kompatibilitas class dengan class yang disediakan dalam waktu proses.

Perubahan UI

Fokus tampilan

Tampilan dengan area 0 (baik lebar maupun tinggi adalah 0) tidak lagi focusable.
Selain itu, aktivitas tidak lagi secara implisit menetapkan fokus awal dalam mode-sentuh. Sebagai gantinya, terserah Anda untuk secara eksplisit meminta fokus awal, bila menginginkannya.

Penanganan nilai heksadesimal RGBA CSS

Aplikasi yang menargetkan Android 9 atau yang lebih tinggi harus mengaktifkan draf perilaku CSS Color Module Level 4 untuk menangani CSS color 4 dan 8 digit hex.
CSS Color Module Level 4 telah didukung Chrome sejak rilis 52, tetapi WebView saat ini menonaktifkan fitur tersebut karena aplikasi Android yang ada diketahui memuat 32 bit warna hex dalam Android ordering (ARGB), yang akan menyebabkan error rendering.
Misalnya, warna #80ff8080 saat ini dirender di WebView sebagai merah terang (#ff8080) untuk aplikasi yang menargetkan API level 27 atau lebih rendah. Komponen utama (yang akan ditafsirkan oleh Android sebagai komponen alfa) saat ini diabaikan. Bila sebuah aplikasi menargetkan API level 28 atau yang lebih tinggi, #80ff8080 ditafsirkan sebagai 50% hijau terang transparan (#80ff80).

Elemen scrolling dokumen

Android 9 menangani kejadian dengan benar ketika elemen root dokumen adalah elemen scroll. Pada versi sebelumnya, posisi scroll disetel pada elemen bodi, dan elemen root memiliki nilai scroll nol. Android 9 mengaktifkan perilaku sesuai standar dengan elemen scroll adalah elemen root.
Selain itu, langsung mengakses document.body.scrollTop, document.body.scrollLeft, document.documentElement.scrollTop atau document.documentElement.scrollLeft akan berperilaku berbeda bergantung pada SDK target. Untuk mengakses nilai scroll viewport, gunakan document.scrollingElement, jika tersedia.

Notifikasi dari aplikasi yang ditangguhkan

Sebelum Android 9, notifikasi dari aplikasi yang ditangguhkan dibatalkan. Mulai Android 9, notifikasi dari aplikasi yang ditangguhkan akan disembunyikan hingga aplikasi dilanjutkan.

Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.



Source :

Perubahan perilaku: aplikasi yang menargetkan API level 28+

No comments:

Post a Comment

Rekomendasi Aplikasi Penghasil Cuan :D Dirumah saja tetap Dapet Duit !!!

Hallo Bosskyuuh semua. Perkenalkan aku Patrick Ananta berasal dari Jawa Tengah. Aku sudah lama sekali dirumahkan dikarenakan covid19 sehingg...