Davranış değişiklikleri: tüm uygulamalar

Android 17 platformu, uygulamanızı etkileyebilecek davranış değişiklikleri içerir. Aşağıdaki davranış değişiklikleri, targetSdkVersion değerinden bağımsız olarak Android 17'de çalışan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeli ve uygun olduğu durumlarda bu değişiklikleri desteklemek için uygulamanızı gerektiği gibi değiştirmelisiniz.

Yalnızca Android 17'yi hedefleyen uygulamaları etkileyen davranış değişiklikleri listesini de incelemeyi unutmayın.

Güvenlik

Android 17, cihaz ve uygulama güvenliğiyle ilgili aşağıdaki iyileştirmeleri içerir.

usesClearTraffic desteğini sonlandırma planı

Gelecekteki bir sürümde usesCleartextTraffic öğesinin desteğini sonlandırmayı planlıyoruz. Şifrelenmemiş (HTTP) bağlantılar oluşturması gereken uygulamalar, ağ güvenlik yapılandırması dosyası kullanmaya geçmelidir. Bu dosya, uygulamanızın hangi alan adlarına şifresiz metin bağlantıları oluşturması gerektiğini belirtmenize olanak tanır.

Ağ güvenlik yapılandırma dosyalarının yalnızca API seviyesi 24 ve sonraki sürümlerde desteklendiğini unutmayın. Uygulamanızın minimum API düzeyi 24'ten düşükse aşağıdakilerin ikisini de yapmanız gerekir:

  • usesCleartextTraffic özelliğini true olarak ayarlayın.
  • Ağ yapılandırma dosyası kullanma

Uygulamanızın minimum API düzeyi 24 veya daha yüksekse bir ağ yapılandırma dosyası kullanabilirsiniz ve usesCleartextTraffic değerini ayarlamanız gerekmez.

Örtülü URI izinlerini kısıtlama

目前,如果应用启动的 intent 包含具有操作 SendSendMultipleImageCapture 的 URI,系统会自动向目标应用授予读取和写入 URI 权限。我们计划在 Android 18 中更改此行为。因此,我们建议应用明确授予相关的 URI 权限,而不是依赖系统来授予这些权限。

Uygulama başına anahtar deposu sınırları

Uygulamalar, cihazdaki tüm uygulamalar için paylaşılan bir kaynak olduğundan Android Keystore'da çok sayıda anahtar oluşturmaktan kaçınmalıdır. Android 17'den itibaren sistem, bir uygulamanın sahip olabileceği anahtar sayısını sınırlar. Android 17 veya sonraki sürümleri hedefleyen sistem dışı uygulamalar için sınır 50.000 anahtar, diğer tüm uygulamalar için ise 200.000 anahtardır. Sistem uygulamaları, hangi API düzeyini hedeflediklerinden bağımsız olarak 200.000 anahtarla sınırlıdır.

Bir uygulama sınırın üzerinde anahtar oluşturmaya çalışırsa oluşturma işlemi KeyStoreException ile başarısız olur. İstisnanın ileti dizesinde anahtar sınırı hakkında bilgiler yer alır. Uygulama, istisna üzerinde getNumericErrorCode() çağrısı yaparsa dönüş değeri, uygulamanın hedeflediği API düzeyine bağlıdır:

  • Android 17 veya sonraki sürümleri hedefleyen uygulamalar: getNumericErrorCode() yeni ERROR_TOO_MANY_KEYS değerini döndürür.
  • Diğer tüm uygulamalar: getNumericErrorCode() döndürülür ERROR_INCORRECT_USAGE.

Kullanıcı deneyimi ve sistem arayüzü

Android 17, daha tutarlı ve sezgisel bir kullanıcı deneyimi oluşturmak için aşağıdaki değişiklikleri içerir.

Döndürme işleminden sonra varsayılan IME görünürlüğünü geri yükleme

Android 17'den itibaren, cihazın yapılandırması değiştiğinde (ör. döndürme yoluyla) ve bu değişiklik uygulamanın kendisi tarafından işlenmediğinde önceki IME görünürlüğü geri yüklenmez.

Uygulamanızın, işlemeyeceği bir yapılandırma değişikliğine uğraması ve değişiklikten sonra klavyenin görünür olması gerekiyorsa bunu açıkça istemeniz gerekir. Bu isteği aşağıdaki yöntemlerden biriyle yapabilirsiniz:

  • android:windowSoftInputMode özelliğini stateAlwaysVisible olarak ayarlayın.
  • Etkinliğinizin onCreate() yönteminde programatik olarak dokunmatik klavye isteğinde bulunun veya onConfigurationChanged() yöntemini ekleyin.

İnsan girdisi

Android 17, uygulamaların klavye ve dokunmatik yüzey gibi insan giriş cihazlarıyla etkileşimini etkileyen aşağıdaki değişiklikleri içerir.

Dokunmatik alanlar, işaretçi yakalama sırasında varsayılan olarak göreli etkinlikler sunar.

从 Android 17 开始,如果应用使用 View.requestPointerCapture() 请求捕获指针,并且用户使用触控板,系统会识别用户触摸操作产生的指针移动和滚动手势,并以与捕获的鼠标产生的指针和滚轮移动相同的方式将这些信息报告给应用。在大多数情况下,这使得支持捕获鼠标的应用无需为触控板添加特殊的处理逻辑。如需了解详情,请参阅 View.POINTER_CAPTURE_MODE_RELATIVE 的文档。

以前,系统不会尝试识别触控板的手势,而是以类似于触摸屏触摸的格式将原始的绝对手指位置传递给应用。如果应用仍需要此绝对数据,则应改为使用 View.POINTER_CAPTURE_MODE_ABSOLUTE 调用新的 View.requestPointerCapture(int) 方法。

Medya

Android 17, medya davranışıyla ilgili aşağıdaki değişiklikleri içerir.

Arka planda ses güvenliğini artırma

从 Android 17 开始,音频框架对后台音频互动(包括音频播放、音频焦点请求和音量更改 API)强制执行限制,以确保这些更改是由用户有意启动的。

如果应用尝试在应用处于无效生命周期时调用音频 API,则音频播放和音量更改 API 会静默失败,而不会抛出异常或提供失败消息。音频焦点 API 失败,结果代码为 AUDIOFOCUS_REQUEST_FAILED

如需了解详情(包括缓解策略),请参阅后台音频强化