Önceki sürümlerde olduğu gibi Android 12 de etkileyebilir. Aşağıdaki davranış değişiklikleri yalnızca uygulamalar için geçerlidir Bu kampanyalar, Android 12 veya sonraki sürümü hedefleyen kullanıcılardan oluşur. Uygulamanız kullanıyorsanız, uygulamanızı bu davranışları destekleyecek şekilde değiştirmeniz gerekir uygun şekilde ele alacağız.
Kullanıcı deneyimi
Özel bildirimler
Android 12, tamamen özel bildirimlerin görünümünü ve davranışını değiştirir. Daha önce, özel bildirimler bildirim alanının tamamını kullanabiliyordu. ve kendi düzen ve stillerini sunar. Bu durum, benimsediğimiz kullanıcıların kafasını karıştırabilir veya farklı cihazlarda düzen uyumluluğu sorunlarına neden olabilir.
Android 12'yi hedefleyen uygulamalar için özel içerik görünümlerine sahip bildirimler
tam bildirim alanını kullanma, Bunun yerine sistem, standart bir
tıklayın. Bu şablon, özel bildirimlerde de
süslemeleri (örneğin, bildirim simgesi) tüm eyaletlerde diğer bildirimler
ve genişletme olanakları (daraltılmış durumda) ve bildirimin simgesi,
uygulama adını tıklayın ve uygun kapsamı daraltın (genişletme durumunda). Bu davranış,
davranışıyla neredeyse aynıdır:
Notification.DecoratedCustomViewStyle
.
Bu sayede Android 12, tüm bildirimlerin görsel olarak tutarlı olmasını ve kolay bir şekilde gönderilmesini sağlar. kullanıcılar için bulunabilir, alışkın olduğunuz bildirim genişletmesi sayesinde tarayabilirsiniz.
Aşağıdaki resimde, standart şablonda özel bir bildirim gösterilmektedir:
Aşağıdaki örneklerde, özel bildirimlerin daraltılmış bir durumda nasıl oluşturulacağı gösterilmektedir ve genişletilmiş bir durum vardır:
![](https://developer.android.com/static/images/about/versions/12/custom-collapsed-view.png?authuser=6&hl=tr)
![](https://developer.android.com/static/images/about/versions/12/custom-expanded-view.png?authuser=6&hl=tr)
Android 12'deki değişiklik, şu özel alt sınıfları tanımlayan uygulamaları etkiler:
Notification.Style
veya
Notification.Builder
adlı kullanıcının yöntemleri
setCustomContentView(RemoteViews)
,
setCustomBigContentView(RemoteViews)
,
ve setCustomHeadsUpContentView(RemoteViews)
.
Uygulamanız tamamen özel bildirimler kullanıyorsa en kısa sürede yeni şablon eklemeniz gerekir.
Özel bildirim değişikliğini etkinleştirin:
- Yeni davranışı etkinleştirmek için uygulamanızın
targetSdkVersion
ayarınıS
olarak değiştirin. - Yeniden derleyin.
- Uygulamanızı Android 12 çalıştıran bir cihaza veya emülatöre yükleyin.
- Yeni davranışı etkinleştirmek için uygulamanızın
Özel görünümler kullanan tüm bildirimleri test ederek, sizin gibi göründüklerinden emin olun. içiniz rahat olur. Testler sırasında aşağıdaki noktalara dikkat edin: ve gerekli düzenlemeleri yapın:
Özel görünümlerin boyutları değişti. Genellikle yükseklik, . Daraltılmış özel içeriğin maksimum yüksekliği 106 dp'den düşürüldü 48 dp'ye. Ayrıca, daha az yatay alan vardır.
Tüm bildirimler, Android 12'yi hedefleyen uygulamalar için genişletilebilir. Bu genellikle
setCustomContentView
kullanıyorsanız şunu da kullanmanız gerekir:setBigCustomContentView
kontrol edin."Dikkat"in istediğiniz gibi görünüyorsa, bildirim kanalının önemini "HIGH" seviyesine çıkarın. (Çalışır durumda ekranında).
Android App Links doğrulama değişiklikleri
Android 12 veya sonraki sürümleri hedefleyen uygulamalarda sistem, Android App Links'in doğrulanmış olmalıdır. Bu değişiklikler, uygulama bağlama deneyiminin güvenilirliğini artırır ve daha fazla hem de uygulama geliştiriciler ve son kullanıcılar için kontrol olanağı sağlar.
Uygulamanızda web bağlantılarını açmak için Android App Link doğrulamasından yararlanıyorsanız
Amaç eklerken doğru biçimi kullandığınızdan emin olun
filtreleri
Android uygulama bağlantısı doğrulaması. Özellikle, bu amaçların
filtreleri, BROWSABLE
kategorisini içerir ve https
şemasını destekler.
Ayrıca doğrulama uygulamanızın bağlantılarını kullanabilirsiniz.
Pencere içinde pencere davranışında iyileştirmeler
Android 12'de pencere içinde pencere (PIP) modu için davranış iyileştirmeleri eklendi. Ayrıca hareketler için geçiş animasyonlarına yönelik önerilen görünümle ilgili iyileştirmeler öğe tabanlı gezinme ile ilgili daha fazla bilgi edinin.
Pencere içinde pencere" bölümüne bakın iyileştirmeleri ekleyebilirsiniz.
Tost tasarımı yenilendi
Android 12'de toast görünümü yeniden tasarlandı. Kısa iletiler artık iki satır metinle sınırlıdır ve uygulamayı gösterir simgesine dokunun.
![Mesajda gösterilen bir kısa mesaj pop-up'ının gösterildiği Android cihaz resmi
"Mesaj gönderiliyor" bir uygulama simgesinin yanında](https://developer.android.com/static/images/toast.png?authuser=6&hl=tr)
Daha fazla bilgi için Bildirim mesajlarına genel bakış başlıklı makaleyi inceleyin.
Güvenlik ve gizlilik
Yaklaşık konum
Android 12 veya sonraki sürümleri çalıştıran cihazlarda kullanıcılar yaklaşık konum doğruluk oranı.
WebView'daki modern SameSite çerezleri
Android'in WebView bileşeni Chromium'a dayanır,
. Chromium kullanıma sunuldu
üçüncü taraf çerezlerinin işlenmesinde daha fazla güvenlik sağlamak ve
ve kullanıcılara daha fazla şeffaflık ve kontrol sunar. Android 12 sürümünden itibaren
Uygulamalar şunları hedeflediğinde bu değişiklikler WebView
kapsamında da yer alır:
Android 12 (API düzeyi 31) veya sonraki sürümler.
Bir çerezin SameSite
özelliği, herhangi bir çerezle gönderilip gönderilemeyeceğini kontrol eder
veya yalnızca aynı site istekleriyle yapılabilir. Aşağıdaki gizlilik koruma uygulamaları
değişiklikler, üçüncü taraf çerezlerinin varsayılan olarak işlenmesini
iyileştirir ve
istenmeyen siteler arası paylaşıma karşı:
SameSite
özelliği olmayan çerezlerSameSite=Lax
olarak kabul edilir.SameSite=None
içeren çerezler deSecure
özelliğini belirtmelidir. Bu, güvenli bir bağlam gerektirir ve HTTPS üzerinden gönderilmelidir.- Bir sitenin HTTP ve HTTPS sürümleri arasındaki bağlantılar artık siteler arası kabul ediliyor
bu nedenle, uygun şekilde işaretlenmedikçe çerezler gönderilmez.
SameSite=None; Secure
Geliştiriciler için genel yol, siteler arası çerezi tanımlamaktır.
bağımlılıkları ve kritik kullanıcı akışlarınıza
bağlı olarak SameSite
özelliğinin değeri, gerektiğinde uygun değerlerle açıkça ayarlanır. Şunu yapmalısınız:
web sitelerinde çalışmasına izin verilen çerezleri açıkça belirtme veya
HTTP'den HTTPS'ye geçen aynı site gezinmelerinde
kesintisiz çalışır.
Web geliştiricileri için bu değişikliklerle ilgili kapsamlı rehberlik için bkz. SameSite Cookies Açıklamalı ve Düzenli SameSite.
Uygulamanızdaki SameSite davranışlarını test edin
Uygulamanız WebView kullanıyorsa veya akışlarınızı Android 12 WebView'da test etmenizi öneririz. Sorun tespit ederseniz yeni SameSite davranışları bulunur.
Giriş işlemleri, yerleştirilmiş içerik ve oturum açma akışlarıyla ilgili sorunlara dikkat edin. ve diğer kimlik doğrulama akışlarının güvenli olmayan bir ile başlar ve güvenli bir sayfaya geçer.
Bir uygulamayı WebView ile test etmek isterseniz aşağıdaki adımlardan birini uygulayarak test etmek istediğiniz bir uygulamadır:
Kullanıcı arayüzü işaretini açıp kapatarak SameSite davranışlarını test cihazında manuel olarak etkinleştirin webview-etkinleştirme-modern-cookie-aynı-site Web Görünümü geliştirici araçlarında.
Bu yaklaşım, Android 5.0 (API düzeyi 21) sürümünü çalıştıran tüm cihazlarda test yapmanıza olanak tanır. veya daha yeni sürümler (Android 12 dahil) ve WebView 89.0.4385.0 sürümü veya daha yüksek olabilir.
Uygulamanızı
targetSdkVersion
tarihine kadar Android 12'yi (API düzeyi 31) hedefleyecek şekilde derleyin.Bu yaklaşımı benimserseniz Android 12.
Android'de WebView için uzaktan hata ayıklama hakkında bilgi edinmek üzere Başlarken Android Cihazlarda Uzaktan Hata Ayıklama özelliğini kullanın.
Diğer kaynaklar
SameSite modern davranışları ve Chrome'a sunum hakkında daha fazla bilgi ve WebView için Chromium SameSite Güncellemeleri'ni ziyaret edin öğrenin. WebView'da bir hata bulursanız veya Chromium'u kullanıyorsanız herkese açık Chromium sorunundan bildirebilirsiniz İzleyici.
Hareket sensörlerinin hız sınırlaması vardır
Uygulamanız aşağıdakileri hedefliyorsa kullanıcılar hakkındaki hassas olabilecek bilgileri korumak için: Android 12 veya sonraki sürümlerde sistem, yenilemeye bir sınır uygular Belirli hareket sensörlerinden ve konum sensörlerinden gelen veri hızı.
Sensör hakkında daha fazla bilgi edinin. hız sınırlamasını kullanın.
Uygulamayı hazırda bekletme
Android 12, izinleri otomatik sıfırlama seçeneğinden sonra genişler. davranış (API düzeyi 30) kullanıma sunulacak. Uygulamanız bunu hedefliyorsa Android 12'deyseniz kullanıcı birkaç saniye boyunca uygulamanızla etkileşimde bulunmazsa aylar sonra, sistem verilen izinleri otomatik olarak sıfırlar ve uygulamanızı hazırda bekleme durumuna benzer.
Uygulama ile ilgili kılavuzdan daha fazla bilgi edinin hazırda bekleme.
Veri erişimi denetiminde ilişkilendirme beyanı
Android 11'de (API düzeyi 30) kullanıma sunulan veri erişimi denetleme API'si, ilişkilendirme oluşturmak etiketleri, kullanım alanlarından bahsedeceğiz. Bu etiketler, projenizin hangi kısımlarına uygulamanızın belirli bir veri erişimi türü gerçekleştirmesi gerekir.
Uygulamanız Android 12 veya sonraki bir sürümü hedefliyorsa bunları beyan etmeniz gerekir: ilişkilendirme etiketlerini uygulamanızın manifest dosyasına ekleyin.
ADB yedekleme kısıtlaması
Android 12, gizli uygulama verilerinin korunmasına yardımcı olmak için
adb backup
komutudur. Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için
Kullanıcı adb backup
komutunu çalıştırdığında, uygulama verileri diğer
dışa aktarılan sistem verileridir.
Test veya geliştirme iş akışlarınız adb backup
kullanan uygulama verilerini kullanıyorsa
Artık uygulamanızın verilerini dışa aktarmayı etkinleştirmek için
android:debuggable
uygulamanızın manifest dosyasında true
konumuna ekleyin.
Daha güvenli bileşen dışa aktarma
Uygulamanız Android 12 veya sonraki bir sürümü hedefliyorsa ve
etkinlikler,
hizmetler veya yayın
niyet kullanan alıcılar
filtreleri kullanıyorsanız
şunu beyan etmek:
android:exported
özelliği
bu uygulama bileşenleri için de geçerlidir.
Uygulama bileşeni
LAUNCHER
kategorisi, ayarlandı
android:exported
- true
. Diğer çoğu durumda, android:exported
öğesini şu değere ayarlayın:
false
.
Aşağıdaki kod snippet'inde intent içeren bir hizmet örneği
android:exported
özelliği false
olarak ayarlanmış filtre:
<service android:name="com.example.app.backgroundService" android:exported="false"> <intent-filter> <action android:name="com.example.app.START_BACKGROUND" /> </intent-filter> </service>
Android Studio'da Mesajlar
Uygulamanız,
intent filtreleri ancak android:exported
bildirmiyor. Aşağıdaki uyarı
Mesajlar, kullandığınız Android Studio sürümüne bağlı olarak gösterilir:
Android Studio 2020.3.1 Canary 11 veya sonraki sürümler
Aşağıdaki mesajlar görünür:
Manifest dosyanızda aşağıdaki lint uyarısı görünür:
When using intent filters, please specify android:exported as well
Uygulamanızı derlemeye çalıştığınızda aşağıdaki derleme hatası mesajı gösterilir görünür:
Manifest merger failed : Apps targeting Android 12 and higher are required \ to specify an explicit value for android:exported when the corresponding \ component has an intent filter defined.
Android Studio'nun eski sürümleri
Uygulamayı yüklemeye çalışırsanız Logcat şu hata mesajını görüntüler:
Installation did not succeed.
The application could not be installed: INSTALL_FAILED_VERIFICATION_FAILURE
List of apks:
[0] '.../build/outputs/apk/debug/app-debug.apk'
Installation failed due to: 'null'
Beklemedeki amaçlar değişkenliği
Uygulamanız Android 12'yi hedefliyorsa cihazın
değişkenliği
sizin için geçerli olan her bir PendingIntent
için de geçerlidir. Bu ek şart, uygulamanızın güvenliğini artırır.
Beklemedeki amaç değişkenliği değişikliğini test etme
Uygulamanızda değişkenlik beyanının eksik olup olmadığını öğrenmek için Android Studio'da aşağıdaki lint uyarısını takip edin:
Warning: Missing PendingIntent mutability flag [UnspecifiedImmutableFlag]
Güvenli olmayan intent lansmanları
Android 12 ve sonraki sürümler, platform güvenliğini iyileştirmek için güvenli olmayan uygulama başlatmalarını algılayan amaçlar. Zaman sistem böyle güvenli olmayan bir başlatma, kullanıcı adı StrictMode ihlali söz konusu olur.
Performans
Ön plan hizmeti başlatma kısıtlamaları
Android 12 veya sonraki sürümleri hedefleyen uygulamalar ön planı başlatamaz hizmetlerinde çalışırken arka plan, birkaç özel alan dışında durumlar hakkında daha fazla bilgi edinin. Bir uygulama arka planda çalışırken bir ön plan hizmeti bir istisna oluşur (birkaç özel durum hariç).
Plan yapmak ve hızlandırılmış bir şekilde başlamak için WorkManager'ı kullanabilirsiniz. iş arka planda çalışırken kontrol edin. Zaman açısından hassas olan işlemleri ön plan hizmetlerini tam olarak aynı anda başlatmak için alarm.
Tam alarm izni
Uygulamaları, sistem kaynaklarını korumaya teşvik etmek için Android 12 ve sonraki sürümler için tam alarmların "Alarmlar ve hatırlatıcılar Özel uygulama erişimi ekranında görünen özellik sistem ayarları.
Bu özel uygulamaya erişim elde etmek için
SCHEDULE_EXACT_ALARM
izninin olması gerekir.
Tam alarmlar yalnızca kullanıcılara yönelik özellikler için kullanılmalıdır. Şu konu hakkında daha fazla bilgi edinin: bir veri kümesi belirlemek için kabul edilebilir alarm.
Davranış değişikliğini devre dışı bırak
Uygulamanızı Android 12'yi hedeflemeye hazırlarken geçici olarak hata ayıklanabilir derlemenizdeki davranış değişikliğini devre dışı bırakın varyantı olarak gönderin. Bunu yapmak için aşağıdakilerden birini yapabilirsiniz:
- Geliştirici seçenekleri ayar ekranında Uygulama Uyumluluğu'nu seçin Değişiklikler. Görünen ekranda uygulamanızın adına dokunun, ardından uygulamanızı kapatın REQUIRE_EXACT_ALARM_PERMISSION [REQUIRE_EXACT_ALARM_PERMISSION]
Geliştirme makinenizdeki bir terminal penceresinde aşağıdaki komutu çalıştırın:
adb shell am compat disable REQUIRE_EXACT_ALARM_PERMISSION PACKAGE_NAME
Bildirim trambolin kısıtlamaları
Kullanıcılar bildirimlerini görüyorsanız bazı uygulamalar bir uygulamayı başlatarak bildirim dokunduğunda bileşeninin sonunda Kullanıcının nihayet gördüğü ve etkileşimde bulunduğu etkinlik. Bu uygulama bileşeni bildirim trambolini olarak bilinir.
Android 12 veya sonraki sürümleri hedefleyen uygulamalar, uygulama performansını ve kullanıcı deneyimini iyileştirmek için
%'si, hizmetlerden veya
yayın alıcıları
bildirim trambolinleri. Başka bir deyişle, kullanıcı bir bildirime dokunduktan sonra
veya içindeki bir işlem düğmesini
bildirimi görürseniz uygulamanız
startActivity()
bir hizmet veya yayın alıcısı içinde
gösterilir.
Uygulamanız bir hizmetten veya yayın alıcıdan etkinlik başlatmaya çalıştığında bildirim trambolini gibi işlev gören bir bildirimle sistem, başlıyor ve Logcat:
Indirect notification activity start (trampoline) from PACKAGE_NAME, \
this should be avoided for performance reasons.
Hangi uygulama bileşenlerinin bildirim trambolinleri olarak işlev gördüğünü belirleyin
Uygulamanızı test ederken bir bildirime dokunduktan sonra, uygulamanızda bildirim trambolini işlevi gören hizmet veya yayın alıcı. Bunun için aşağıdaki terminal komutunun çıkışına bakın:
adb shell dumpsys activity service \ com.android.systemui/.dump.SystemUIAuxiliaryDumpService
Çıkışın bir bölümünde "NotifEngagementLog" metni yer alır. Bu bölüm başlayan bileşeni tanımlamak için gerekli olan bilgileri karar verir.
Uygulamanızı güncelleme
Uygulamanız bir hizmetten veya yayın alıcıdan şu işlemleri başlatırsa: aşağıdaki taşıma adımlarını tamamlayın:
- Şu özelliklere sahip bir
PendingIntent
nesnesi oluşturun: kullanıcıların bildirime dokunduktan sonra gördükleri etkinlikle ilişkilidir. bildirimi görürsünüz. - Parça olarak önceki adımda oluşturduğunuz
PendingIntent
nesnesini kullanın bir proje yöneticisi olarak bildirimi bulunmaktadır.
Etkinliğin kaynağını belirlemek için, örneğin günlük kaydı yapmak amacıyla
ve bildirimi gönderirken ekstraları kullanmalıdır. Merkezi günlük kaydı için
ActivityLifecycleCallbacks
veya Jetpack yaşam döngüsü gözlemcileri.
Davranışı değiştir
Uygulamanızın hata ayıklaması yapılabilir bir sürümünü test ederken
veya NOTIFICATION_TRAMPOLINE_BLOCK
uygulama uyumluluk işaretini kullanarak kısıtlayın.
Yedekleme ve geri yükleme
Çalışan ve uygulamayı hedefleyen uygulamalarda yedekleme ve geri yüklemenin çalışma şeklinde değişiklikler yapıldı Android 12 (API düzeyi 31). Android yedekleme ve geri yüklemenin iki biçimi vardır:
- Bulut yedeklemeleri: Kullanıcı verileri, kullanıcının Google Drive'ında depolanır. Böylece, bu cihaza veya yeni cihaza geri yüklenebilir.
- Cihazdan cihaza (D2D) aktarımlar: Kullanıcı verileri doğrudan Kullanıcının eski cihazından yeni cihazı (ör. kablo kullanarak).
Verilerin nasıl yedeklendiği ve geri yüklendiğiyle ilgili daha fazla bilgi için Kullanıcıyı yedekleme verileri otomatik yedeklemeyle ve anahtar/değer çiftlerini Android Yedekleme Hizmeti.
D2D aktarım işleviyle ilgili değişiklikler
Android 12 ve sonraki sürümleri çalıştıran ve bu sürümleri hedefleyen uygulamalar için:
XML ile dahil etme ve hariç tutma kurallarını belirtme yapılandırma mekanizması D2D aktarımlarını etkilemez ancak bulut tabanlı yedekleme ve geri yükleme işlemlerini etkiler (ör. Google Drive yedeklemeleri). Alıcı: D2D aktarımları için kurallar belirtmeniz gerekiyorsa, kapsanan yeni yapılandırmayı kullanmanız gerekir göreceğiz.
Bazı cihaz üreticilerinin cihazlarında
android:allowBackup="false"
, Google Drive'a yedeklemeyi devre dışı bırakır, ancak uygulama için D2D aktarımları devre dışı bırakmaz.
Yeni dahil etme ve hariç tutma biçimi
Android 12 ve sonraki sürümleri çalıştıran ve bu sürümleri hedefleyen uygulamalar, farklı bir biçim kullanabilirsiniz. Bu biçim fark yaratıyor Google Drive yedeklemesi ile D2D aktarımı arasında açık bir şekilde bulut yedeklemeleri ve D2D için dahil etme ve hariç tutma kurallarını ayrı ayrı belirtin aktarmalısınız.
İsteğe bağlı olarak, yedekleme kurallarını belirtmek için de kullanabilirsiniz. Bu durumda, Android 12 veya sonraki sürümleri çalıştıran cihazlarda daha önce kullanılan yapılandırmalar yoksayılır. daha yüksek. Android 11 çalıştıran cihazlar için eski yapılandırma hâlâ gereklidir veya daha düşük olmasını sağlayın.
XML biçimi değişiklikleri
Aşağıda, Android'de yedekleme ve geri yükleme yapılandırması için kullanılan biçim verilmiştir. 11 ve altı:
<full-backup-content> <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" requireFlags=["clientSideEncryption" | "deviceToDeviceTransfer"] /> <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> </full-backup-content>
Aşağıda kalın biçimdeki değişiklikler gösterilmektedir.
<data-extraction-rules> <cloud-backup [disableIfNoEncryptionCapabilities="true|false"]> ... <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string"/> ... <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string"/> ... </cloud-backup> <device-transfer> ... <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string"/> ... <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string"/> ... </device-transfer> </data-extraction-rules>
Daha fazla bilgi için aşağıdaki ilgili bölüme bakın rehberimizi inceleyin.
Uygulamalar için manifest işareti
Uygulamalarınızı yeni XML yapılandırmasına yönlendirmek için
Manifest dosyanızdaki android:dataExtractionRules
özelliği
dosyası olarak kaydedebilirsiniz. Yeni XML yapılandırmasını seçtiğinizde,
Eski yapılandırmayı işaret eden android:fullBackupContent
özelliği yoksayıldı
Android 12 veya sonraki sürümleri çalıştıran cihazlarda. Aşağıdaki kod örneğinde, yeni
manifest dosyası girişleri:
<application ... <!-- The below attribute is ignored. --> android:fullBackupContent="old_config.xml" <!-- You can point to your new configuration using the new dataExtractionRules attribute . --> android:dataExtractionRules="new_config.xml" ...> </application>
Bağlantı
Bluetooth izinleri
Android 12,
BLUETOOTH_SCAN
,
BLUETOOTH_ADVERTISE
,
ve
BLUETOOTH_CONNECT
izin verir. Bu izinler, hedef kitleyi hedefleyen
Android 12'yi Bluetooth ile etkileşimde bulunmak için kullanma
Android cihazlarda, özellikle de
cihaz konumuna erişmesi lazım.
Cihazınızı Android 12 veya sonraki bir sürümü hedeflemeye hazırlamak için güncelleyin: her şeyi öğreteceğim. Eski bir Bluetooth grubu belirtmek yerine izin, daha modern bir Bluetooth seti beyan etmek izinleri hakkında daha fazla bilgi edinin.
Eşler arası eş zamanlı + İnternet bağlantısı
Android 12 (API düzeyi 31) veya sonraki bir sürümü hedefleyen uygulamalar için eş zamanlı eşler arası ve internet bağlantıları sayesinde aynı anda kablosuz bağlantı sağlanabilir Hem eş cihaza hem de internet sağlayan birincil ağa bağlandığında, ve kullanıcı deneyimini daha sorunsuz hale getiriyor. Uygulama hedefleme Android 11 (API düzeyi 30) veya önceki sürümler, eski davranışı kullanmaya devam eder. birincil kablosuz ağın, eşe bağlanmadan önce bağlantısı kesildi olanak tanır.
Uyumluluk
WifiManager.getConnectionInfo()
, şunun için WifiInfo
’i döndürebilir:
ekleyebilirsiniz. Bu nedenle, API'nin davranışı
Android 12 ve sonraki sürümlerde aşağıdaki yöntemleri uygulayın:
- Yalnızca tek bir kablosuz ağ varsa
WifiInfo
değeri döndürülür. - Birden fazla kablosuz ağ varsa ve çağrı uygulaması bir
eşler arası bağlantıda ise eş cihaza karşılık gelen
WifiInfo
geri döndü. - Birden fazla kablosuz ağ mevcutsa ve sesli arama uygulaması kullanılamadığında
P2P direkt bağlantıyı tetiklemek için, internet sağlayan birincil bağlantının
WifiInfo
döndürüldü.
İki eşzamanlı eşlemeyi destekleyen cihazlarda daha iyi bir kullanıcı deneyimi sunmak
tüm uygulamaları öneririz. Özellikle de pili tetikleyen
P2P direkt bağlantılar: Görüşme yerine
WifiManager.getConnectionInfo()
ve onun yerine şunu kullanın:
NetworkCallback.onCapabilitiesChanged()
kaydetmek için kullanılan NetworkRequest
ile eşleşen WifiInfo
nesnenin tümünü almak için
NetworkCallback
. getConnectionInfo()
şu tarih itibarıyla kullanımdan kaldırıldı:
Android 12.
Aşağıdaki kod örneğinde, WifiInfo
öğesinin bir
NetworkCallback
:
Kotlin
val networkCallback = object : ConnectivityManager.NetworkCallback() { ... override fun onCapabilitiesChanged( network : Network, networkCapabilities : NetworkCapabilities) { val transportInfo = networkCapabilities.getTransportInfo() if (transportInfo !is WifiInfo) return val wifiInfo : WifiInfo = transportInfo ... } }
Java
final NetworkCallback networkCallback = new NetworkCallback() { ... @Override public void onCapabilitiesChanged( Network network, NetworkCapabilities networkCapabilities) { final TransportInfo transportInfo = networkCapabilities.getTransportInfo(); if (!(transportInfo instanceof WifiInfo)) return; final WifiInfo wifiInfo = (WifiInfo) transportInfo; ... } ... };
mDNSResponseer yerel API
Android 12, uygulamaların mDNSResponseer arka plan programı ile
mDNSReplyer yerel API'sini kullanın.
Önceden bir uygulama ağda bir hizmete kaydettiğinde
ve getSystemService()
yönteminde, mDNSResponseer arka plan programını başlatmış
uygulama henüz NsdManager
yöntemi çağırmadı. Daha sonra, arka plan programı
tüm düğümlü çoklu yayın gruplarına bağlanarak sistemin daha fazla uyanmasına neden olur.
ve ek güç harcayın. Android 12'de pil kullanımını en aza indirmek için
Artık sistem, mDNSReplyer arka plan programını yalnızca gerektiğinde başlatır.
ve sonrasında durdurur.
Bu değişiklik mDNSResponseer arka plan programının ne zaman kullanılabileceğini etkilediği için
mDNSResponseer arka plan programının çağrılmasından sonra başlatılacağını
getSystemService()
yöntemi, sistemden şunu içeren iletiler alabilir:
mDNSResponseer arka plan programı kullanılamıyor. NsdManager
kullanan ve kullanmayan uygulamalar
mDNSReplyer yerel API'sini kullanmak bu değişiklikten etkilenmez.
Satıcı kitaplıkları
Tedarikçi firma tarafından sağlanan yerel paylaşılan kitaplıklar
NDK olmayan yerel paylaşılan kitaplıklar
silikon tedarikçileri veya cihaz üreticileri tarafından sağlananlara erişilemez.
Uygulama Android 12 (API düzeyi 31) veya sonraki sürümleri hedefliyorsa varsayılan olarak. İlgili içeriği oluşturmak için kullanılan
kitaplıklara yalnızca
<uses-native-library>
kapanış etiketinin hemen öncesine yapıştırın.
Uygulama Android 11 (API düzeyi 30) veya önceki sürümleri hedefliyorsa
<uses-native-library>
etiketi gerekli değildir. Bu durumda, tüm yerel kullanıcılar
kitaplığına NDK kitaplığı olup olmadığına bakılmaksızın erişilebilir.
SDK dışı kısıtlamalar güncellendi
Android 12, SDK dışı kısıtlanmış öğelerin güncel listelerini içerir Android geliştiricileriyle ortak çalışmaya dayalı arayüzler ve en yeni dahili test. Mümkün olduğunda, herkese açık alternatiflerin SDK dışı arayüzleri kısıtlamadan önce kullanıma sunuyoruz.
Uygulamanız Android 12'yi hedeflemiyorsa bu değişikliklerden bazıları sizi hemen etkilemeyebilir. Ancak şu anda SDK olmayan arayüzler (uygulamanızın hedef API seviyesine bağlı olarak), SDK dışı bir yöntem veya alan kullanmak her zaman uygulamasını indirin.
Uygulamanızın SDK olmayan arayüz kullanıp kullanmadığından emin değilseniz uygulama öğrenin. Uygulamanız SDK dışı arayüz kullanıyorsa alternatiflerine geçiş yaptık. Bununla birlikte, bazı uygulamalarda SDK dışı arayüzler için geçerli kullanım alanları. Alternatif bir alternatif bulamazsanız Uygulamanızdaki bir özellik için SDK olmayan arayüz kullanmak istiyorsanız yeni genel API.
Android'in bu sürümündeki değişiklikler hakkında daha fazla bilgi edinmek için Android 12'deki SDK dışı arayüz kısıtlamaları. Daha fazla bilgi edinmek için SDK dışı arayüzler hakkında bilgi edinmek için SDK dışı arayüzlerle ilgili kısıtlamalara göz atın. bilgi edinin.