PengembangRumahAndroidMemakaiTelevisiMobilDisainMengembangkanLatihanPanduan APIReferensiAlatLayanan GoogleSampelMendistribusikanGoogle PlayEssentialsDapatkan PenggunaTerlibat & MempertahankanDapatkanMenganalisaCerita
Tampilkan navigasi
Android 6.0 Perubahan
Seiring dengan fitur baru dan kemampuan, Android 6.0 (API tingkat 23) mencakup berbagai perubahan sistem dan perubahan perilaku API.Dokumen ini menyoroti beberapa perubahan penting yang harus Anda mengerti dan menjelaskan dalam aplikasi Anda.
Jika sebelumnya Anda telah mempublikasikan sebuah aplikasi untuk Android, menyadari bahwa perubahan ini di platform mempengaruhi aplikasi Anda.
Runtime Izin
Rilis ini memperkenalkan izin model baru, di mana pengguna dapat langsung mengelola hak akses aplikasi pada saat runtime. Model ini memberikan pengguna meningkatkan visibilitas dan kontrol atas izin, sementara menyederhanakan instalasi dan auto-update proses untuk pengembang aplikasi. Pengguna dapat memberikan atau mencabut izin secara individual untuk aplikasi diinstal.
Pada aplikasi Anda yang menargetkan Android 6.0 (API tingkat 23) atau lebih tinggi, pastikan untuk memeriksa dan izin permintaan pada saat runtime. Untuk menentukan apakah aplikasi Anda telah diberikan izin, panggilan barucheckSelfPermission () metode. Untuk meminta izin, panggilan barurequestPermissions () metode. Bahkan jika aplikasi Anda tidak menargetkan Android 6.0 (API tingkat 23), Anda harus menguji aplikasi Anda dengan model perizinan baru.
Untuk rincian tentang mendukung model izin baru di app, lihat Bekerja dengan Sistem Permissionss. Untuk tips tentang cara untuk menilai dampak pada aplikasi Anda, lihat Izin Praktik Terbaik.
Tertidur dan App Siaga
Rilis ini memperkenalkan optimasi hemat daya baru untuk perangkat menganggur dan aplikasi. Fitur-fitur ini mempengaruhi semua aplikasi jadi pastikan untuk menguji aplikasi Anda di modus baru.
Tertidur: Jika pengguna unplugs perangkat dan daun stasioner, dengan layar off, untuk jangka waktu, perangkat masuk ke Doze mode, di mana ia mencoba untuk menjaga sistem dalam kondisi tidur. Dalam mode ini, perangkat secara berkala kembali beroperasi normal untuk periode waktu yang singkat sehingga sinkronisasi aplikasi dapat terjadi dan sistem dapat melakukan operasi apapun yang tertunda.App Siaga: App siaga memungkinkan sistem untuk menentukan bahwa sebuah aplikasi idle ketika pengguna tidak aktif menggunakannya. Sistem ini membuat penentuan ini ketika pengguna tidak menyentuh aplikasi untuk jangka waktu tertentu. Jika perangkat dicabut, sistem menonaktifkan akses jaringan dan menunda syncs dan pekerjaan untuk aplikasi yang dianggap menganggur.
Untuk mempelajari lebih lanjut tentang perubahan hemat daya, lihatMengoptimalkan untuk Doze dan App siaga.
Apache HTTP Client Removal
Rilis Android 6.0 menghilangkan dukungan untuk klien Apache HTTP. Jika aplikasi Anda menggunakan klien ini dan menargetkan Android 2.3 (API level 9) atau lebih tinggi, gunakan HttpURLConnection kelas gantinya. API ini lebih efisien karena mengurangi penggunaan jaringan melalui kompresi transparan dan caching respon, dan meminimalkan konsumsi daya. Untuk terus menggunakan API Apache HTTP, Anda harus terlebih dahulu mendeklarasikan berikut ketergantungan kompilasi-waktu di Anda build.gradle berkas:
android
{useLibrary
'org.apache.http.legacy'}
BoringSSL
Android adalah bergerak menjauh dari OpenSSL ke BoringSSL perpustakaan.Jika Anda menggunakan NDK Android di app, jangan link terhadap perpustakaan kriptografi yang bukan merupakan bagian dari NDK API, seperti libcrypto.sodan libssl.so. Perpustakaan ini tidak API umum, dan dapat berubah tanpa pemberitahuan atau menghancurkan seluruh rilis dan perangkat. Selain itu, Anda mungkin mengekspos diri Anda untuk kerentanan keamanan. Sebaliknya, memodifikasi kode asli Anda untuk memanggil kriptografi API Java melalui JNI atau statis link terhadap perpustakaan kriptografi pilihan Anda.
Akses ke Hardware Identifier
Untuk menyediakan pengguna dengan perlindungan data yang lebih besar, mulai di rilis ini, Android menghilangkan program akses ke pengenal perangkat keras lokal perangkat untuk aplikasi menggunakan Wi-Fi dan Bluetooth API. TheWifiInfo.getMacAddress () dan BluetoothAdapter.getAddress ()metode sekarang kembali nilai konstan 02: 00: 00: 00: 00: 00.
Untuk mengakses pengenal hardware perangkat eksternal terdekat melalui Bluetooth dan Wi-Fi scan, aplikasi Anda sekarang harus memilikiACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION izin:
WifiManager.getScanResults ()BluetoothDevice.ACTION_FOUNDBluetoothLeScanner.startScan ()
Catatan: Ketika sebuah perangkat yang menjalankan Android 6.0 (API tingkat 23) memulai background Wi-Fi atau Bluetooth scan, operasi terlihat ke perangkat eksternal sebagai berasal dari alamat MAC acak.
Pemberitahuan
Rilis ini menghilangkan Notification.setLatestEventInfo () metode.Gunakan Notification.Builder kelas bukan untuk membangun pemberitahuan. Untuk memperbarui pemberitahuan berulang kali, menggunakan kembali Notification.Builder misalnya. Memanggil membangun () metode untuk mendapatkan update Pemberitahuan contoh.
The pemberitahuan dumpsys shell adb perintah tidak lagi mencetak teks pemberitahuan Anda. Gunakan adb shell dumpsys pemberitahuan --noredact perintah bukan untuk mencetak teks dalam sebuah objek pemberitahuan.
AudioManager Perubahan
Pengaturan volume secara langsung atau mematikan aliran tertentu melaluiAudioManager kelas tidak lagi didukung. The setStreamSolo () metode sudah ditinggalkan, dan Anda harus memanggil requestAudioFocus () metode sebagai gantinya. Demikian pula, setStreamMute () metode sudah ditinggalkan;sebaliknya, memanggil adjustStreamVolume () metode dan lulus dalam nilai arah ADJUST_MUTE atau ADJUST_UNMUTE.
Teks Seleksi
Ketika pengguna memilih teks di app, kini Anda dapat menampilkan teks tindakan pilihan seperti Cut, Copy, dan Paste di toolbarmengambang.Pelaksanaan interaksi pengguna adalah serupa dengan tindakan bar kontekstual, seperti yang dijelaskan dalam Mengaktifkan modus tindakan kontekstual untuk pandanganindividu.
Untuk menerapkan floating toolbar untuk pemilihan teks, membuat perubahan berikut dalam aplikasi yang ada:
Dalam AndaLihat atau Kegiatan objek, mengubah Anda ActionMode panggilan daristartActionMode (Callback) ke startActionMode (Callback,ActionMode.TYPE_FLOATING).Ambil implementasi yang ada dari ActionMode.Callback dan membuatnya memperpanjang ActionMode.Callback2 gantinya.Menimpa onGetContentRect () metode untuk memberikan koordinat konten Rect objek (seperti teks pilihan persegi panjang) di dalam view.Jika posisi persegi panjang tidak berlaku lagi, dan ini adalah satu-satunya elemen yang akan batal, memanggil invalidateContentRect () metode.
Jika Anda menggunakan Library Dukungan Android revisi 22,2, menyadari bahwa toolbar mengambang tidak mundur-kompatibel dan appcompat mengambil kontrol atas ActionMode benda bywith th default. Hal ini mencegah toolbar dari yang ditampilkan mengambang. Untuk mengaktifkan ActionMode dukungan dalamAppCompatActivity, sebut getDelegate (), kemudian memanggilsetHandleNativeActionModesEnabled () pada kembaliAppCompatDelegate objek dan mengatur parameter masukan ke palsu. Ini kembali panggilan kontrol ActionMode objek untuk kerangka kerja. Dalam perangkat yang menjalankan Android 6.0 (API tingkat 23), yang memungkinkan kerangka untuk mendukung ActionBar atau mode toolbar mengambang, sementara pada perangkat yang menjalankan Android 5.1 (API tingkat 22) atau lebih rendah, hanya ActionBar mode yang didukung.
Browser Bookmark Perubahan
Rilis ini menghilangkan dukungan untuk bookmark global. Theandroid.provider.Browser.getAllBookmarks () danandroid.provider.Browser.saveBookmark () metode sekarang dihapus.Demikian pula, READ_HISTORY_BOOKMARKS dan WRITE_HISTORY_BOOKMARKSizin dikeluarkan. Jika Anda target aplikasi Android 6.0 (API tingkat 23) atau lebih tinggi, tidak mengakses bookmark dari penyedia global atau menggunakan izin bookmark. Sebaliknya, aplikasi Anda harus menyimpan data bookmark internal.
Android Keystore Perubahan
Dengan rilis ini, penyedia Android Keystore tidak lagi mendukung DSA. ECDSA masih didukung.
Kunci yang tidak memerlukan enkripsi saat istirahat tidak lagi dihapus ketika layar kunci aman dinonaktifkan atau mengatur ulang (misalnya, oleh pengguna atau Administrator Device). Kunci yang membutuhkan enkripsi saat istirahat akan dihapus selama acara tersebut.
Wi-Fi dan Jaringan Perubahan
Rilis ini memperkenalkan perubahan perilaku berikut ke Wi-Fi dan jaringan API.
Aplikasi Anda sekarang dapat mengubah keadaan WifiConfiguration objek hanya jika Anda membuat benda-benda ini. Anda tidak diizinkan untuk mengubah atau menghapus WifiConfiguration objek yang dibuat oleh pengguna atau oleh aplikasi lain.Sebelumnya, jika sebuah aplikasi dipaksa perangkat untuk terhubung ke jaringan Wi-Fi dengan menggunakan enableNetwork () dengan disableAllOthers = true pengaturan, perangkat terputus dari jaringan lain seperti data seluler.Dalam rilis ini, perangkat tidak lagi terputus dari jaringan lain tersebut. Jika aplikasi Anda targetSdkVersion adalah "20" atau lebih rendah, itu disematkan ke jaringan Wi-Fi yang dipilih. Jika aplikasi AndatargetSdkVersion adalah "21" atau lebih tinggi, gunakan API MultiNetwork (seperti openConnection (), bindSocket (), dan barubindProcessToNetwork () metode) untuk memastikan bahwa lalu lintas jaringan dikirimkan pada jaringan yang dipilih.
Perubahan Layanan Kamera
Dalam rilis ini, model untuk mengakses sumber daya bersama dalam pelayanan kamera telah berubah dari sebelumnya "pertama datang, pertama melayani" model akses ke model akses di mana proses prioritas tinggi yang disukai. Perubahan perilaku layanan meliputi:
Akses ke sumber daya subsistem kamera, termasuk pembukaan dan mengkonfigurasi perangkat kamera, diberikan berdasarkan "prioritas" dari proses aplikasi klien. Proses aplikasi dengan kegiatan-pengguna terlihat atau latar depan umumnya diberi prioritas lebih tinggi, membuat akuisisi sumber daya kamera dan menggunakan lebih diandalkan.Klien kamera aktif untuk aplikasi prioritas yang lebih rendah dapat "diusir" ketika aplikasi prioritas yang lebih tinggi mencoba untuk menggunakan kamera. Dalam usang Camera API, hasil ini dalam onError () dipanggil untuk klien digusur.Dalam Camera2 API, itu menghasilkan onDisconnected () dipanggil untuk klien digusur.Pada perangkat dengan hardware kamera yang tepat, proses aplikasi terpisah mampu mandiri terbuka dan menggunakan perangkat kamera terpisah secara bersamaan. Namun, kasus penggunaan multi-proses, di mana akses simultan menyebabkan penurunan yang signifikan dari kinerja atau kemampuan dari setiap perangkat kamera terbuka, sekarang terdeteksi dan dianulir oleh layanan kamera. Perubahan ini dapat menyebabkan "pengusiran" untuk klien prioritas yang lebih rendah bahkan ketika tidak ada aplikasi lain langsung mencoba untuk mengakses perangkat kamera yang sama.Mengubah pengguna saat menyebabkan klien kamera aktif dalam aplikasi yang dimiliki oleh akun pengguna sebelumnya untuk digusur. Akses ke kamera terbatas untuk profil pengguna yang dimiliki oleh pengguna perangkat saat ini.Dalam prakteknya, ini berarti bahwa akun "Tamu", misalnya, tidak akan dapat meninggalkan menjalankan proses yang menggunakan subsistem kamera ketika pengguna telah beralih ke account yang berbeda.
Runtime
ART runtime sekarang benar menerapkan aturan akses untuk newInstance ()metode. Perubahan ini perbaikan masalah di mana Dalvik sedang memeriksa aturan akses tidak benar di versi sebelumnya. Jika aplikasi Anda menggunakannewInstance () metode dan Anda ingin menimpa pemeriksaan akses, memanggil setAccessible () metode dengan parameter masukan diatur kebenar. Jika aplikasi Anda menggunakan perpustakaan appcompat v7 atauperpustakaan v7 recyclerview, Anda harus memperbarui aplikasi Anda gunakan untuk versi terbaru dari perpustakaan tersebut. Jika tidak, pastikan bahwa setiap kelas kustom dirujuk dari XML diperbarui sehingga konstruktor kelas mereka dapat diakses.
Update rilis ini perilaku linker dinamis. Linker dinamis sekarang mengerti perbedaan antara perpustakaan soname dan jalurnya (bug publik 6670), dan pencarian dengan soname kini dilaksanakan. Aplikasi yang sebelumnya bekerja yang memiliki buruk DT_NEEDED entri (biasanya path absolut pada sistem file membangun mesin) mungkin gagal ketika dimuat.
The dlopen (3) RTLD_LOCAL bendera kini diterapkan dengan benar. Perhatikan bahwa RTLD_LOCAL adalah default, sehingga panggilan untuk dlopen (3) yang tidak secara eksplisit menggunakan RTLD_LOCAL akan terpengaruh (kecuali aplikasi Anda secara eksplisit digunakan RTLD_GLOBAL). Dengan RTLD_LOCAL, simbol tidak akan dibuat tersedia untuk perpustakaan dimuat oleh panggilan kemudian untuk dlopen (3) (sebagai lawan yang direferensikan oleh DT_NEEDED entri).
Pada versi sebelumnya Android, jika aplikasi Anda diminta sistem untuk memuat shared library dengan relokasi teks, sistem ditampilkan peringatan tapi masih memungkinkan perpustakaan untuk dimuat. Mulai tahun rilis ini, sistem menolak perpustakaan ini jika versi Target SDK aplikasi Anda adalah 23 atau lebih tinggi.Untuk membantu Anda mendeteksi jika perpustakaan gagal untuk memuat, aplikasi Anda harus log dlopen (3) kegagalan, dan termasuk masalah deskripsi teks bahwa dlerror (3) kembali panggilan. Untuk mempelajari lebih lanjut tentang penanganan relokasi teks, lihat ini panduan.
APK Validasi
Platform ini sekarang melakukan validasi ketat dari APK. Sebuah APK dianggap korup jika file dinyatakan dalam manifest tetapi tidak hadir dalam APK itu sendiri.Sebuah APK harus kembali menandatangani jika ada isi yang dihapus.
USB Connection
Perangkat koneksi melalui port USB kini ditetapkan untuk mengisi-satunya modus secara default. Untuk mengakses perangkat dan isinya melalui koneksi USB, pengguna harus secara eksplisit memberikan izin untuk interaksi tersebut. Jika aplikasi Anda mendukung interaksi pengguna dengan perangkat melalui port USB, mempertimbangkan bahwa interaksi harus secara eksplisit diaktifkan.
Android untuk Kerja Perubahan
Rilis ini meliputi perubahan perilaku berikut untuk Android Pekerjaan:
Kontak kerja dalam konteks pribadi. Google Dialer Panggilan Masuk sekarang menampilkan kontak bekerja ketika panggilan pandangan pengguna terakhir.Pengaturan setCrossProfileCallerIdDisabled () untuk benarmenyembunyikan kontak profil bekerja di Google Dialer Panggilan Log. Kontak pekerjaan dapat ditampilkan bersama dengan kontak pribadi ke perangkat melalui Bluetooth hanya jika Anda mengatursetBluetoothContactSharingDisabled () ke palsu. Secara default, sudah diatur untuk benar. Penghapusan konfigurasi Wi-Fi: konfigurasi Wi-Fi menambahkan dengan Profil Pemilik (misalnya, melalui panggilan ke addNetwork () metode) sekarang dihapus jika profil pekerjaan dihapus.Konfigurasi kuncian Wi-Fi: Setiap konfigurasi Wi-Fi dibuat oleh pemilik perangkat aktif tidak lagi dapat diubah atau dihapus oleh pengguna jikaWIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN non-nol. Pengguna masih dapat membuat dan memodifikasi sendiri Wi-Fi konfigurasi mereka. Aktif Pemilik Perangkat memiliki hak istimewa untuk mengedit atau menghapus setiap konfigurasi Wi-Fi, termasuk yang tidak diciptakan oleh mereka.Ambil Kebijakan Kerja Pengendali melalui penambahan akun Google: Ketika account Google yang memerlukan manajemen melalui Kebijakan Kerja Controller (WPC) aplikasi ditambahkan ke perangkat di luar konteks berhasil, aliran akun add sekarang meminta pengguna untuk menginstal WPC sesuai.Perilaku ini juga berlaku untuk rekening ditambahkan melalui Settings> Accountdan di awal setup wizard perangkat.Perubahan spesifik DevicePolicyManager perilaku API:Memanggil setCameraDisabled () metode mempengaruhi kamera untuk pengguna panggilan saja; menyebutnya dari profil dikelola tidak mempengaruhi aplikasi kamera berjalan pada pengguna utama.Selain itu, setKeyguardDisabledFeatures () metode sekarang tersedia untuk Profil Pemilik, serta Pemilik Device.Sebuah Profil Pemilik dapat mengatur pembatasan ini Pengaman tombol:KEYGUARD_DISABLE_TRUST_AGENTS danKEYGUARD_DISABLE_FINGERPRINT, yang mempengaruhi pengaturan pengaman tombol untuk profil induk pengguna.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS, yang hanya mempengaruhi pemberitahuan yang dihasilkan oleh aplikasi dalam profil dikelola.The createAndInitializeUser () dan createUser () metode telah usang.The setScreenCaptureDisabled () metode sekarang juga blok yang membantu struktur ketika sebuah aplikasi dari pengguna yang diberikan adalah di latar depan.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM sekarang defaultnya SHA-256. SHA-1 masih didukung untuk kompatibilitas mundur tapi akan dihapus di masa depan.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM sekarang hanya menerima SHA-256.API perangkat initializer yang ada di Android 6.0 (API tingkat 23) sekarang dihapus.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS dihapus sehingga NFC bertemu pengadaan tidak bisa pemrograman membuka perangkat dilindungi reset pabrik.Anda sekarang dapat menggunakanEXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE ekstra untuk melewatkan data ke perangkat aplikasi pemilik selama NFC penyediaan perangkat dikelola.Android untuk API Kerja dioptimalkan untuk izin M runtime, termasuk profil Kerja, membantu lapisan, dan lain-lain. New DevicePolicyManager API izin tidak mempengaruhi aplikasi pre-M.Ketika pengguna kembali keluar dari bagian sinkron dari aliran pengaturan dimulai melalui ACTION_PROVISION_MANAGED_PROFILE atauACTION_PROVISION_MANAGED_DEVICE niat, sistem sekarang mengembalikan RESULT_CANCELED kode hasil.Perubahan API lain:Data Usage: The android.app.usage.NetworkUsageStats kelas telah berganti nama NetworkStats.Perubahan pengaturan global:Pengaturan ini tidak lagi dapat diatur melalui setGlobalSettings ():BLUETOOTH_ONDEVELOPMENT_SETTINGS_ENABLEDMODE_RINGERNETWORK_PREFERENCEWIFI_ONPengaturan global ini sekarang dapat diatur melalui setGlobalSettings():WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN
Kecuali seperti yang tercantum, konten ini dilisensikan di bawah lisensi Creative Commons Attribution 2.5. Untuk rincian dan pembatasan, lihat Lisensi Isi.
Tentang Android Auto TV Wear Hukum English Español Bahasa Indonesia 日本語 한국어 Português Brasileiro Русский tiếng Việt 中文 (简体) 中文 (繁體)
No comments:
Post a Comment
Comment