Android 6.0 (API düzeyi 23), yeni özelliklerin ve yeteneklerin yanı sıra aşağıdakileri de içerir: sistem değişiklikleri ve API davranışı değişiklikleri. Bu dokümanda öne çıkanlar uygulamalarınızda anlamanız ve dikkate almanız gereken önemli değişikliklerden bazılarına değineceğiz.
Daha önce Android için bir uygulama yayınladıysanız bu değişikliklerin nasıl etkilediğini öğrenin.
Çalışma Zamanı İzinleri
Bu sürümle birlikte, kullanıcıların artık doğrudan yönetmeleri için uygulama izinlerini kontrol edin. Bu model, kullanıcıların şu öğeler üzerinde daha fazla görünürlük ve kontrol elde etmesini sağlar: uygulama geliştiricilerin yükleme ve otomatik güncelleme işlemlerini kolaylaştırır. Kullanıcılar yüklü uygulamalar için izinleri tek tek verebilir veya iptal edebilir.
Android 6.0 (API düzeyi 23) veya sonraki sürümü hedefleyen uygulamalarınızda Android 6.0 (API düzeyi 23) veya sonraki sürümlerin yüklü olup olmadığını kontrol edip istekte bulunduğunuzdan emin olun.
izinleri sunmanızı sağlar. Uygulamanıza izin verilip verilmediğini öğrenmek için
yeni checkSelfPermission()
yöntemidir. İzin istemek için yeni
requestPermissions()
.
yöntemidir. Uygulamanız Android 6.0'ı (API düzeyi 23) hedeflemese bile
yeni izin modelini inceleyelim.
Uygulamanızda yeni izin modelini desteklemeyle ilgili ayrıntılar için Sistem İzinleriyle Çalışma. Uygulama üzerindeki etkisini değerlendirmeyle ilgili ipuçları için İzin Kullanım Notları'nı inceleyin.
Doz ve Uygulamayı Beklemeye Alma
Bu sürüm, boşta kalan cihazlar ve uygulamalar için güç tasarrufu sağlayan yeni optimizasyonlar sunar. Bu özellikleri tüm uygulamaları etkilediğinden uygulamalarınızı bu yeni modlarda test etmeyi unutmayın.
- Doz: Kullanıcı bir cihazı fişten çıkarıp ekranı kapalı halde sabit bir şekilde bırakırsa Cihaz, belirli bir süre Doz moduna geçer ve bu modda sistemi tutmaya çalışır. uyku modundan çıkar. Bu modda cihazlar kısa süreliğine normal işlemlere Böylece uygulama senkronizasyonunun gerçekleşebilmesi ve sistemin beklemedeki işlemleri gerçekleştirebilmesi için zaman tanımanız gerekir.
- Uygulamayı Bekleme Modu: Uygulamayı Beklemeye Alma, sistemin bir uygulamanın boşta olduğunu belirlemesine olanak tanır uzun zamandır. Sistem, kullanıcı bunu yapmadığında uygulamaya belirli bir süre dokunun. Cihaz fişe takılı değilse sistem ağı devre dışı bırakır ve boşta olarak gördüğü uygulamaların senkronizasyonları ve işleri askıya alınır.
Güç tasarrufu sağlayan bu değişiklikler hakkında daha fazla bilgi edinmek için Doz ve Uygulamayı Beklemeye Alma için Optimize Etme.
Apache HTTP İstemcisini Kaldırma
Android 6.0 sürümü, Apache HTTP istemcisi desteğini kaldırıyor. Uygulamanız bu istemciyi kullanıyorsa ve
Android 2.3 (API düzeyi 9) veya sonraki sürümleri hedefliyorsa HttpURLConnection
sınıfını kullanın
. Bu API, şeffaf sıkıştırma yoluyla ağ kullanımını azalttığı için daha verimlidir
ve yanıtları önbelleğe almanın yanı sıra güç tüketimini en aza indirir. Apache HTTP API'lerini kullanmaya devam etmek için
öncelikle build.gradle
dosyanızda aşağıdaki derleme zamanı bağımlılığını bildirmeniz gerekir:
android { useLibrary 'org.apache.http.legacy' }
SıkıcıSSL
Android, OpenSSL'den
BoringSSL
kitaplığını açar. Uygulamanızda Android NDK kullanıyorsanız şifreleme kitaplıklarına karşı bağlantı vermeyin
NDK API'nin parçası olmayan libcrypto.so
ve libssl.so
gibi. Bu
kitaplıklar herkese açık API'ler değildir ve sürümler ile cihazlarda haber verilmeden değiştirilebilir veya bozulabilir.
Ayrıca kendinizi güvenlik açıklarına maruz bırakabilirsiniz. Bunun yerine,
Java kriptografi API'lerini JNI aracılığıyla çağırmak veya bir
kriptografi kitaplığını kullanabilirsiniz.
Donanım Tanımlayıcısına Erişim
Android bu sürümden itibaren kullanıcılara daha fazla veri koruması sağlamak için
cihazın yerel donanım tanımlayıcısına programatik erişimi kaldırır.
360.000 metre uzunluğunda olmalıdır. İlgili içeriği oluşturmak için kullanılan
WifiInfo.getMacAddress()
ve
BluetoothAdapter.getAddress()
yöntem
artık 02:00:00:00:00:00
sabit değerini döndürüyor.
Bluetooth ve kablosuz ağ taramalarını kullanarak yakındaki harici cihazların donanım tanımlayıcılarına erişmek için
uygulamanızda artık ACCESS_FINE_LOCATION
veya
ACCESS_COARSE_LOCATION
izinleri:
Not: Android 6.0 (API düzeyi 23) çalıştıran bir cihaz, veya Bluetooth taraması varsa, işlem harici cihazlar tarafından rastgele hale getirilmiş bir MAC adresinden gelen bir adrestir.
Bildirimler
Bu sürüm, Notification.setLatestEventInfo()
yöntemini kaldırır. Şunu kullanın:
Notification.Builder
sınıfını kullanın. Bir
bildirimi tekrar tekrar kullanıyorsanız Notification.Builder
örneğini yeniden kullanın. Şunu çağırın:
Almak için build()
yöntem
Notification
örneği güncelledi.
adb shell dumpsys notification
komutu artık bildirim metninizi yazdırmıyor.
Metni yazdırmak için adb shell dumpsys notification --noredact
komutunu kullanın
bir bildirim nesnesi ekler.
Ses Yöneticisi Değişiklikleri
AudioManager
aracılığıyla ses düzeyini doğrudan ayarlama veya belirli akışların sesini kapatma
sınıfı artık desteklenmiyor. setStreamSolo()
yöntemi kullanımdan kaldırıldığı için
requestAudioFocus()
yöntemini kullanın. Aynı şekilde,
setStreamMute()
yöntemi
desteği sonlandırıldı; bunun yerine adjustStreamVolume()
yöntemini çağırın ve yön değerini aktarın
ADJUST_MUTE
veya
ADJUST_UNMUTE
.
Metin Seçimi
![Kayan araç çubuğundaki yeni metin seçimi özelliklerini gösteren ekran](https://developer.android.com/static/images/android-6.0/text-selection.gif?authuser=9&hl=tr)
Kullanıcılar uygulamanızda metin seçtiğinde artık Bir tablodaki Kes, Kopyala ve Yapıştır kayan araç çubuğu. Kullanıcı etkileşimi uygulaması, bağlamsal işlem çubuğu için Bağımsız görünümler için bağlamsal işlem modunu etkinleştirme.
Metin seçiminde kayan araç çubuğu uygulamak için mevcut reklam ayarlarınızda aşağıdaki değişiklikleri yapın: uygulamalar:
View
veyaActivity
nesnenizde Şu kişilerdenActionMode
arama:startActionMode(Callback)
-startActionMode(Callback, ActionMode.TYPE_FLOATING)
.- Mevcut
ActionMode.Callback
uygulamanızı alın ve uzatın Bunun yerineActionMode.Callback2
. - Geçersiz kıl
onGetContentRect()
. içerikRect
nesnesinin koordinatlarını sağlama yöntemi (metin seçimi dikdörtgen gibi) tıklayın. - Dikdörtgen konumlandırması artık geçerli değilse ve geçersiz kılınacak tek öğe buysa
invalidateContentRect()
yöntemini çağırın.
kullanıyorsanız
Android Destek Kitaplığı düzeltmesi 22.2; kayan araç çubuklarının
geriye dönük uyumluluğa ve appcompat'a, ActionMode
nesnelerin kontrolünü ele geçirerek
varsayılandır. Bu, kayan araç çubuklarının görüntülenmesini engeller. Etkinleştirmek için
ActionMode
desteği
AppCompatActivity
, telefon et
getDelegate()
, ardından telefon et
Döndürülen: setHandleNativeActionModesEnabled()
AppCompatDelegate
nesnesini sorgulayın ve girişi ayarlayın
parametresini false
olarak ayarlayın. Bu çağrı, ActionMode
nesnenin kontrolünü şuraya döndürür:
bilmek zorundasınız. Android 6.0 (API düzeyi 23) çalıştıran cihazlarda, çerçeve
Çalışan cihazlarda ActionBar
veya kayan araç çubuğu modları
Android 5.1 (API düzeyi 22) veya önceki sürümlerde yalnızca ActionBar
modları
desteklenir.
Tarayıcı Yer İşareti Değişiklikleri
Bu sürüm, genel yer işaretleri için desteği kaldırır. İlgili içeriği oluşturmak için kullanılan
android.provider.Browser.getAllBookmarks()
android.provider.Browser.saveBookmark()
yöntemleri kaldırıldı. Benzer şekilde, READ_HISTORY_BOOKMARKS
ve WRITE_HISTORY_BOOKMARKS
izinleri kaldırılır. Uygulamanız Android 6.0 (API düzeyi 23) veya sonraki bir sürümü hedefliyorsa uygulamayın
yer işaretlerine kaydedin veya yer işareti izinlerini kullanın. Bunun yerine, uygulamanızın
Yer işareti verilerini dahili olarak kullanabilirsiniz.
Android Anahtar Deposu Değişiklikleri
Bu sürümle Android Anahtar Deposu sağlayıcısı artık desteklenmiyor Dinamik Arama Ağı Reklamları. ECDSA hâlâ desteklenmektedir.
Kullanımda olmayan anahtarlar, güvenli kilit ekranı olduğunda artık silinmeyecek Devre dışı bırakıldığında ya da sıfırlandığında (örneğin, kullanıcı veya Cihaz Yöneticisi tarafından). Gereken anahtarlar aktif olmayan verilerin şifrelenmesi bu etkinlikler sırasında silinir.
Kablosuz Bağlantı ve Ağ İletişimi Değişiklikleri
Bu sürümde, Wi-Fi ve ağ iletişimi API'lerinde aşağıdaki davranış değişiklikleri yapılmıştır.
- Uygulamalarınız artık yalnızca
WifiConfiguration
nesnenin durumunu değiştirebilir bu nesneleri oluşturmanız gerekir. Bu verileri değiştiremez veya silebilirsiniz. Kullanıcı veya diğer uygulamalar tarafından oluşturulanWifiConfiguration
nesne. -
Önceden, bir uygulama
enableNetwork()
disableAllOthers=true
ayarı, cihazın diğer ağlarla bağlantısı kesildi: Hücresel veri kullanıyor. Bu sürümde, cihazın bu tür diğer ağlarla bağlantısı artık kesilmeyecektir. Eğer uygulamanızıntargetSdkVersion
değeri“20”
veya daha düşük, seçili konuma sabitlendi Kablosuz ağ. UygulamanızıntargetSdkVersion
değeri“21”
veya daha yüksekse çoklu ağ API'leri (ör.openConnection()
,bindSocket()
ve yenibindProcessToNetwork()
yöntemini kullanın).
Kamera Hizmeti Değişiklikleri
Bu sürümde, kamera hizmetinde paylaşılan kaynaklara erişim modeli değiştirildi önceki "ilk gelen alır, ilk hizmet alır" erişim modelinden, yüksek öncelikli olduğu bir erişim modeline geçiş yaptık. tercih edilir. Hizmet davranışında yapılan değişiklikler şunlardır:
- Kamerayı açma ve yapılandırma da dahil olmak üzere kamera alt sistem kaynaklarına erişim "önceliği" temel alınarak verilir. Başvuru süreci Kullanıcının görebildiği veya ön plandaki etkinliklere genellikle daha yüksek öncelik verilir. Bu da kamera kaynağının ve daha güvenilir şekilde kullanmanızı sağlar.
- Düşük öncelikli uygulamaların etkin kamera istemcileri, önceliği daha yüksek olduğunda "çıkarılabilir"
uygulama kamerayı kullanmaya çalışıyor. Kullanımdan kaldırılan
Camera
API'de bunun sonucundaonError()
müşteriyi çağrıştırıyor.Camera2
API'sinde,onDisconnected()
tahliye edilen müşteri adına çağrı yapılır. - Uygun kamera donanımına sahip cihazlarda ayrı uygulama işlemleri bağımsız olarak açıp aynı anda ayrı kamera cihazlarını kullanıyor olabilir. Bununla birlikte, çok işlemli kullanım aynı anda erişimin önemli ölçüde azalmasına neden olduğu, Google Ads'in açık kamera cihazlarının tümü kamera hizmeti tarafından algılanır ve bunlara izin verilmez. Bu değişiklik başka bir uygulama doğrudan olmadığında bile daha düşük önceliğe sahip müşterilerin "çıkarılmasına" neden olabilir. erişmeye çalışıyor.
- Geçerli kullanıcının değiştirilmesi, önceki kullanıcı hesabına ait uygulamalarda etkin kamera istemcilerinin kullanılmasına neden olur saldırıya uğrayacaktır. Kameraya erişim, geçerli cihaz kullanıcısına ait kullanıcı profilleriyle sınırlıdır. Pratikte bu, örneğin bir "Misafir" hesabının, hizmeti kullanmayı bırakamayacağı anlamına gelir. kullanıcı farklı bir hesaba geçiş yaptığında kamera alt sistemini kullanan işlemler.
Çalışma zamanı
ART çalışma zamanı artık
newInstance()
yöntemini çağırın. Bu
değişikliği, Dalvik'in önceki sürümlerde erişim kurallarını yanlış bir şekilde kontrol etmesiyle ilgili sorunu düzeltir.
Uygulamanız
newInstance()
yöntem ve siz
erişim kontrollerini geçersiz kılmak istiyorsanız
Girişe sahip setAccessible()
yöntemi
parametresi true
olarak ayarlandı. Uygulamanız
v7 appcompat Library veya
v7 geri dönüşüm görünümü kitaplığı
uygulamanızı bu kitaplıkların en yeni sürümlerine uyacak şekilde güncellemeniz gerekir. Aksi durumda
XML'den başvurulan tüm özel sınıflar, sınıf oluşturucularının erişilebilir olması için güncellenir.
Bu sürüm, dinamik bağlayıcının davranışını günceller. Dinamik bağlayıcı artık
bir kitaplığın soname
ve yolu arasındaki fark
(
herkese açık hata 6670) ve soname
ile arama artık
yardımcı olur. Daha önce çalışan ve DT_NEEDED
girişi hatalı olan uygulamalar
(genellikle derleme makinesinin dosya sistemindeki mutlak yollar) yüklendikten sonra başarısız olabilir.
dlopen(3) RTLD_LOCAL
işareti artık doğru bir şekilde uygulanmıştır. Lütfen
RTLD_LOCAL
varsayılan değerdir. Bu nedenle, dlopen(3)
için yapılan ve açıkça kullanılmamış olan çağrılar
RTLD_LOCAL
bu durumdan etkilenecek (uygulamanız açıkça RTLD_GLOBAL
kullanmadığı sürece). Entegre
RTLD_LOCAL
, semboller
dlopen(3)
(DT_NEEDED
girişleriyle referans alınmadan).
Android'in önceki sürümlerinde, uygulamanız sistemin paylaşılan bir kitaplık yüklemesini istediyse
sistem bir uyarı görüntüledi, ancak yine de kitaplığın yüklenmesine izin verdi.
Bu sürümden itibaren uygulamanızın hedef SDK sürümü 23 ise sistem bu kitaplığı reddeder
veya daha yüksek olabilir. Bir kitaplığın yüklenemediğini tespit etmenize yardımcı olmak için uygulamanız,
dlopen(3)
hatasını sorun ve dlerror(3)
çağrısının sonuçları. Metin yer değiştirme işleminin ele alınması hakkında daha fazla bilgi için şuraya bakın:
kılavuzu inceleyin.
APK Doğrulama
Platform artık APK'lar için daha sıkı doğrulama gerçekleştiriyor. Bir dosya aşağıdaki durumlarda bozuk olarak değerlendirilir: manifest dosyasında belirtilmesini, ancak APK'nın kendisinde mevcut olmadığını belirtmek isteriz. Aşağıdaki durumlardan biri geçerliyse APK yeniden imzalanmalıdır: kaldırılır.
USB Bağlantısı
USB bağlantı noktası üzerinden yapılan cihaz bağlantıları artık varsayılan olarak yalnızca şarj moduna ayarlıdır. Erişmek için bir USB bağlantısı üzerinden cihaza ve içeriğe izin veriyorsa, kullanıcılar bu tür içeriklere etkileşimleridir. Uygulamanız USB bağlantı noktası üzerinden cihazla kullanıcı etkileşimlerini destekliyorsa etkileşimin açıkça etkinleştirilmesi gerektiğini unutmayın.
Android for Work Değişiklikleri
Bu sürüm, Android for Work için aşağıdaki davranış değişikliklerini içerir:
- Kişisel bağlamlarda iş bağlantılarınız. Google Çevirici
Arama Kaydı, kullanıcı geçmiş aramaları görüntülediğinde artık iş kişilerini gösteriyor.
Ayar
setCrossProfileCallerIdDisabled()
.true
, iş profili kişilerini Google Çevirici Arama Kaydı'nda gizler. İş kişileri Bluetooth üzerinden cihazlara özel kişilerle birlikte yalnızcasetBluetoothContactSharingDisabled()
değerinifalse
olarak ayarladınız. Bu seçenek varsayılan olaraktrue
değerine ayarlanmıştır. - Kablosuz ağ yapılandırmasını kaldırma: Profil Sahibi tarafından eklenen kablosuz ağ yapılandırmaları
(örneğin,
addNetwork()
yöntemi) artık söz konusu iş profili silinirse kaldırılır. - Kablosuz yapılandırma kilitleme:
Etkin bir Cihaz Sahibi aşağıdaki durumlarda kullanıcı tarafından değiştirilemez veya silinemez
WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN
sıfır değildir. Kullanıcı yine de kendi kablosuz yapılandırmalarını oluşturabilir ve değiştirebilir. Etkin Cihaz Sahipler, şunlar da dahil olmak üzere herhangi bir kablosuz ağ yapılandırmalarını düzenleme veya kaldırma ayrıcalığına sahiptir: otomatik olarak kapsayabilir. - Google Hesabı ekleme yoluyla cihaz politikası denetleyici indirme: Bir Google Cihaz politikası denetleyici (DPC) uygulaması aracılığıyla yönetim gerektiren hesabın cihaza eklenmesi yönetilen bağlamın dışında, hesap ekleme akışı artık kullanıcıdan uygun şekilde çalışmalıdır. Bu davranış, Ayarlar > Hesaplar bölümünde ve ilk cihaz kurulum sihirbazında gösterilir.
- Belirli
DevicePolicyManager
API davranışlarında değişiklikler:-
setCameraDisabled()
. yöntemi, kamerayı yalnızca arayan kullanıcı için etkiler; yönetilen profilden çağrıldığında birincil kullanıcıda çalışan kamera uygulamalarını etkileyebilir. - Ayrıca,
setKeyguardDisabledFeatures()
. yöntemi artık hem Profil Sahipleri hem de Cihaz Sahipleri tarafından kullanılabilir. - Profil Sahibi şu tuş koruyucu kısıtlamaları ayarlayabilir:
KEYGUARD_DISABLE_TRUST_AGENTS
ve veKEYGUARD_DISABLE_FINGERPRINT
Profilin üst kullanıcısının tuş kilidi ayarları.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS
, yalnızca yönetilen profildeki uygulamalar tarafından oluşturulan bildirimleri etkiler.
DevicePolicyManager.createAndInitializeUser()
veDevicePolicyManager.createUser()
yöntemleri kullanımdan kaldırıldı.setScreenCaptureDisabled()
yöntemi artık belirli bir kullanıcının uygulaması ön plandayken destek yapısını da engelliyor.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
. artık varsayılan olarak SHA-256'ya ayarlıdır. SHA-1, geriye dönük uyumluluk için hâlâ destekleniyor ancak kaldırılacak ileride.EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM
. artık yalnızca SHA-256'yı kabul ediyor.- Android 6.0'da (API düzeyi 23) bulunan cihaz başlatıcı API'leri artık kaldırılmıştır.
EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS
çıkarıldı. Böylece NFC'yi dokundurun temel hazırlık, fabrika ayarlarına sıfırlama korumalı bir cihazın kilidini programlı bir şekilde açamaz.- Artık
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
uygulamasını kullanabilirsiniz yönetilen cihazın NFC temel hazırlığı sırasında cihaz sahibinin uygulamasına veri iletmesini sağlamak için kullanılır. - Android for Work API'leri; İş profilleri,
destek katmanı ve diğerleri. Yeni
DevicePolicyManager
izni API'leri şunları yapmaz: M öncesi uygulamaları da etkileyebilir. - Kullanıcılar,
ACTION_PROVISION_MANAGED_PROFILE
veyaACTION_PROVISION_MANAGED_DEVICE
intent, sistem şimdi birRESULT_CANCELED
sonuç kodu döndürüyor.
-
- Diğer API'lerde yapılan değişiklikler:
- Veri Kullanımı:
android.app.usage.NetworkUsageStats
sınıfı yeniden adlandırıldıNetworkStats
.
- Veri Kullanımı:
- Genel ayarlarda yapılan değişiklikler:
- Bu ayarlar artık
setGlobalSettings()
üzerinden değiştirilemez:BLUETOOTH_ON
DEVELOPMENT_SETTINGS_ENABLED
MODE_RINGER
NETWORK_PREFERENCE
WIFI_ON
- Bu genel ayarlar artık
setGlobalSettings()
üzerinden yapılabilir:
- Bu ayarlar artık