Davranış değişiklikleri: Android 16 veya sonraki sürümleri hedefleyen uygulamalar

Android 16, önceki sürümlerde olduğu gibi uygulamanızı etkileyebilecek davranış değişiklikleri içerir. Aşağıdaki davranış değişiklikleri yalnızca Android 16 veya sonraki sürümleri hedefleyen uygulamalar için geçerlidir. Uygulamanız Android 16 veya sonraki sürümleri hedefliyorsa uygulanabilir durumlarda bu davranışları destekleyecek şekilde uygulamanızı değiştirmeniz gerekir.

Uygulamanızın targetSdkVersion'sinden bağımsız olarak Android 16'da çalışan tüm uygulamaları etkileyen davranış değişiklikleri listesini de incelemeyi unutmayın.

Kullanıcı deneyimi ve sistem kullanıcı arayüzü

Android 16 (API düzeyi 36), daha tutarlı ve sezgisel bir kullanıcı deneyimi oluşturmak için aşağıdaki değişiklikleri içerir.

Uçtan uca kapsam dışında kalma seçeneği kaldırılıyor

Android 15'i (API düzeyi 35) hedefleyen uygulamalarda Android 15'te uçtan uca görünüm zorunlu kılınmıştır ancak uygulamanız R.attr#windowOptOutEdgeToEdgeEnforcement değerini true olarak ayarlayarak bu zorunluluğun dışında kalabilir. Android 16'yı (API düzeyi 36) hedefleyen uygulamalarda R.attr#windowOptOutEdgeToEdgeEnforcement desteği sonlandırıldı ve devre dışı bırakıldı. Uygulamanız uçtan uca ekran özelliğini devre dışı bırakamaz.

  • Uygulamanız Android 16'yı (API düzeyi 36) hedefliyorsa ve Android 15 cihazda çalışıyorsa R.attr#windowOptOutEdgeToEdgeEnforcement çalışmaya devam eder.
  • Uygulamanız Android 16'yı (API düzeyi 36) hedefliyorsa ve Android 16 yüklü bir cihazda çalışıyorsa R.attr#windowOptOutEdgeToEdgeEnforcement devre dışı bırakılır.

Android 16'da test için uygulamanızın uçtan uca desteklediğinden emin olun ve R.attr#windowOptOutEdgeToEdgeEnforcement kullanımını kaldırın. Böylece uygulamanız Android 15 cihazlarda da uçtan uca desteklenir. Uçtan uca destek için Compose (Oluşturma) ve Views (Görünümler) kılavuzuna bakın.

Tahmini geri özelliğini kullanmak için taşıma veya devre dışı bırakma işlemi yapılması gerekir

Android 16'yı (API düzeyi 36) veya sonraki sürümleri hedefleyen ve Android 16 ya da sonraki sürümlerin yüklü olduğu cihazlarda çalışan uygulamalarda, tahminli geri gitme sistem animasyonları (ana sayfaya geri gitme, görevler arası geçiş ve etkinlikler arası geçiş) varsayılan olarak etkindir. Ayrıca, onBackPressed çağrılmıyor ve KeyEvent.KEYCODE_BACK artık gönderilmiyor.

Uygulamanız geri etkinliğini yakalıyorsa ve henüz tahmini geri özelliğine geçmediyseniz uygulamanızı desteklenen geri gezinme API'lerini kullanacak şekilde güncelleyin veya uygulamanızın AndroidManifest.xml dosyasının <application> ya da <activity> etiketinde android:enableOnBackInvokedCallback özelliğini false olarak ayarlayarak geçici olarak devre dışı bırakın.

Tahmine dayalı ana ekrana geri dönme animasyonu.
Tahmine dayalı, etkinlikler arası animasyon.
Tahmine dayalı görevler arası animasyon.

Elegant Font API'leri kullanımdan kaldırıldı ve devre dışı bırakıldı

Apps targeting Android 15 (API level 35) have the elegantTextHeight TextView attribute set to true by default, replacing the compact font with one that is much more readable. You could override this by setting the elegantTextHeight attribute to false.

Android 16 deprecates the elegantTextHeight attribute, and the attribute will be ignored once your app targets Android 16. The "UI fonts" controlled by these APIs are being discontinued, so you should adapt any layouts to ensure consistent and future proof text rendering in Arabic, Lao, Myanmar, Tamil, Gujarati, Kannada, Malayalam, Odia, Telugu or Thai.

elegantTextHeight behavior for apps targeting Android 14 (API level 34) and lower, or for apps targeting Android 15 (API level 35) that overrode the default by setting the elegantTextHeight attribute to false.
elegantTextHeight behavior for apps targeting Android 16 (API level 36), or for apps targeting Android 15 (API level 35) that didn't override the default by setting the elegantTextHeight attribute to false.

Temel işlevler

Android 16 (API düzeyi 36), Android sisteminin çeşitli temel özelliklerini değiştiren veya genişleten aşağıdaki değişiklikleri içerir.

Sabit ücretli iş planlaması optimizasyonu

Android 16'yı hedeflemeden önce, scheduleAtFixedRate geçerli bir işlem yaşam döngüsü dışında olduğu için bir görev yürütmeyi kaçırdığında, uygulama geçerli bir yaşam döngüsüne döndüğünde tüm kaçırılan yürütmeler hemen yürütülür.

Android 16'yı hedeflerken, uygulama geçerli bir yaşam döngüsüne döndüğünde en fazla bir scheduleAtFixedRate yürütme işleminin eksikliği hemen yürütülür. Bu davranış değişikliğinin uygulama performansını iyileştirmesi bekleniyor. Uygulamanızın etkilenip etkilenmediğini kontrol etmek için uygulamanızda bu davranışı test edin. Uygulama uyumluluk çerçevesini kullanarak ve STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS uyumluluk işaretini etkinleştirerek de test yapabilirsiniz.

Cihaz form faktörleri

Android 16 (API düzeyi 36), büyük ekranlı cihazlarda gösterilen uygulamalar için aşağıdaki değişiklikleri içerir.

Uyarlanabilir düzenler

Android uygulamaları artık telefonlar, tabletler, katlanabilir cihazlar, masaüstü bilgisayarlar, arabalar ve TV'ler gibi çeşitli cihazlarda ve büyük ekranlardaki pencere modlarında (ör. bölünmüş ekran ve masaüstü pencere) çalışıyor. Bu nedenle geliştiriciler, cihaz yönünden bağımsız olarak herhangi bir ekran ve pencere boyutuna uyum sağlayan Android uygulamaları oluşturmalıdır. Yön ve yeniden boyutlandırma kısıtlaması gibi paradigmalar, günümüzün çok cihazlı dünyasında çok kısıtlayıcıdır.

Yön, yeniden boyutlandırılabilirlik ve en boy oranı kısıtlamalarını yoksayma

Android 16 (API düzeyi 36) sürümünü hedefleyen uygulamalar için Android 16, sistemin yön, yeniden boyutlandırma ve en-boy oranı kısıtlamalarını yönetme şeklini değiştirir. Genişliği en az 600 dp olan ekranlarda kısıtlamalar geçerli değildir. Uygulamalar, en boy oranından veya kullanıcının tercih ettiği yönlendirmeden bağımsız olarak ekran penceresinin tamamını kaplar ve dikey bantlar kullanılmaz.

Bu değişiklik, yeni bir standart platform davranışı sunar. Android, uygulamaların çeşitli yönlere, ekran boyutlarına ve en boy oranlarına uyum sağlamasının beklendiği bir modele doğru ilerliyor. Sabit yön veya sınırlı yeniden boyutlandırma gibi kısıtlamalar, uygulamanın uyarlanabilirliğini engeller. Bu nedenle, mümkün olan en iyi kullanıcı deneyimini sunmak için uygulamanızı uyarlanabilir hale getirmenizi öneririz.

Bu davranışı uygulama uyumluluğu çerçevesini kullanarak ve UNIVERSAL_RESIZABLE_BY_DEFAULT uyumluluk işaretini etkinleştirerek de test edebilirsiniz.

Sık karşılaşılan zarar veren değişiklikler

Yön, yeniden boyutlandırma ve en-boy oranı kısıtlamalarını yoksaymak, uygulamanızın kullanıcı arayüzünü bazı cihazlarda etkileyebilir. Özellikle de dikey yönde kilitlenmiş küçük düzenler için tasarlanmış öğeler (ör. düzenlerin gerilmesi, ekran dışı animasyonlar ve bileşenler gibi sorunlar) bu durumdan etkilenebilir. En-boy oranı veya yönlendirme ile ilgili tüm varsayımlar, uygulamanızda görsel sorunlara neden olabilir. Bu sorunları önleme ve uygulamanızın uyarlanabilir davranışını iyileştirme hakkında daha fazla bilgi edinin.

Cihaz döndürmeye izin vermek, daha fazla etkinlik yeniden oluşturulmasına neden olur. Bu da düzgün şekilde korunmadığı takdirde kullanıcı durumunun kaybolmasına yol açabilir. Kullanıcı arayüzü durumunu doğru şekilde kaydetmeyi Kullanıcı arayüzü durumlarını kaydetme başlıklı makaleden öğrenebilirsiniz.

Uygulama ayrıntıları

Aşağıdaki manifest özellikleri ve çalışma zamanı API'leri, tam ekran ve çoklu pencere modlarındaki büyük ekranlı cihazlarda yoksayılır:

screenOrientation, setRequestedOrientation() ve getRequestedOrientation() için aşağıdaki değerler yoksayılır:

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

Ekranın yeniden boyutlandırılmasıyla ilgili olarak android:resizeableActivity="false", android:minAspectRatio ve android:maxAspectRatio'ın etkisi yoktur.

Android 16'yı (API düzeyi 36) hedefleyen uygulamalarda, uygulama yönü, yeniden boyutlandırılabilirlik ve en-boy oranı kısıtlamaları büyük ekranlarda varsayılan olarak yoksayılır. Ancak tam olarak hazır olmayan her uygulama, bu davranışı geçici olarak devre dışı bırakabilir (bu da uyumluluk modunda yerleştirilme gibi önceki davranışla sonuçlanır).

İstisnalar

Android 16'daki yön, yeniden boyutlandırma ve en boy oranı kısıtlamaları aşağıdaki durumlarda geçerli değildir:

  • Oyunlar (android:appCategory bayrağına göre)
  • Kullanıcıların, cihazın en boy oranı ayarlarında uygulamanın varsayılan davranışını açıkça etkinleştirmesi
  • sw600dp boyutundan küçük ekranlar

Geçici olarak devre dışı bırakma

Belirli bir etkinliği devre dışı bırakmak için PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY manifest özelliğini bildirin:

<activity ...>
  <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
  ...
</activity>

Uygulamanızın çok fazla bölümü Android 16'ya hazır değilse uygulama düzeyinde aynı özelliği uygulayarak tamamen kapsam dışında kalabilirsiniz:

<application ...>
  <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>

Sağlık ve fitness

Android 16 (API düzeyi 36), sağlık ve fitness verileriyle ilgili aşağıdaki değişiklikleri içerir.

Sağlık ve fitness izinleri

For apps targeting Android 16 (API level 36) or higher, BODY_SENSORS permissions use more granular permissions under android.permissions.health, which Health Connect also uses. As of Android 16, any API previously requiring BODY_SENSORS or BODY_SENSORS_BACKGROUND requires the corresponding android.permissions.health permission instead. This affects the following data types, APIs, and foreground service types:

If your app uses these APIs, it should request the respective granular permissions:

These permissions are the same as those that guard access to reading data from Health Connect, the Android datastore for health, fitness, and wellness data.

Mobile apps

Mobile apps migrating to use the READ_HEART_RATE and other granular permissions must also declare an activity to display the app's privacy policy. This is the same requirement as Health Connect.

Bağlantı

Android 16 (API düzeyi 36), çevre birimi cihazlarıyla bağlantıyı iyileştirmek için Bluetooth yığınında aşağıdaki değişiklikleri içerir.

Bağlantı kaybı ve şifreleme değişikliklerini işlemek için yeni amaçlar

Daha iyi bağ kaybı yönetimi kapsamında Android 16, uygulamalara bağ kaybı ve şifreleme değişiklikleri hakkında daha fazla bilgi sağlamak için 2 yeni intent de sunar.

Android 16'yı hedefleyen uygulamalar artık:

  • Uzaktan bağ kaybı algılandığında ACTION_KEY_MISSING intent'i alır. Bu sayede daha bilgilendirici kullanıcı geri bildirimleri sağlayabilir ve uygun işlemleri yapabilirler.
  • Bağlantının şifreleme durumu değiştiğinde bir ACTION_ENCRYPTION_CHANGE intent'i alın. Şifreleme durumu değişikliği, şifreleme algoritması değişikliği ve şifreleme anahtarı boyutu değişikliği buna dahildir. Uygulamalar, daha sonra ACTION_ENCRYPTION_CHANGE intent'i aldıktan sonra bağlantı başarıyla şifrelenirse bağın geri yüklendiğini dikkate almalıdır.

Farklı OEM uygulamalarında uyum sağlama

Android 16 bu yeni intent'leri kullanıma sunsa da bunların uygulanması ve yayınlanması farklı cihaz üreticilerine (OEM'ler) göre değişiklik gösterebilir. Uygulamanızın tüm cihazlarda tutarlı ve güvenilir bir deneyim sunmasını sağlamak için geliştiricilerin, bağlantı kaybı işlemelerini bu olası varyasyonlara sorunsuz bir şekilde uyum sağlayacak şekilde tasarlamaları gerekir.

Aşağıdaki uygulama davranışlarını öneririz:

  • ACTION_KEY_MISSING intent'i yayınlanırsa:

    ACL (Asenkron Bağlantısız) bağlantısının bağlantısı sistem tarafından kesilir ancak cihazın bağ bilgileri saklanır (burada açıklandığı gibi).

    Uygulamanız, bağlantı kaybı algılama için birincil sinyal olarak bu intent'i kullanmalı ve cihazı unutma veya yeniden eşleme işlemini başlatmadan önce kullanıcıyı uzak cihazın kapsama alanında olduğunu onaylamasına yönlendirmelidir.

    Bir cihaz ACTION_KEY_MISSING alındıktan sonra bağlantısını keserse uygulamanız, cihaz artık sistemle bağlı olmayabileceğinden yeniden bağlantı kurarken dikkatli olmalıdır.

  • ACTION_KEY_MISSING intent'i yayınlanmıyorsa:

    ACL bağlantısı bağlı kalır ve Android 15'teki davranışla aynı şekilde cihazın bağ bilgileri sistem tarafından kaldırılır.

    Bu senaryoda, uygulamanız, bağ kaybı etkinliklerini algılayıp yönetmek için önceki Android sürümlerindeki mevcut bağ kaybı işleme mekanizmalarını kullanmaya devam etmelidir.

Bluetooth eşlemesini kaldırmanın yeni yolu

Android 16'yı hedefleyen tüm uygulamalar artık CompanionDeviceManager'teki herkese açık bir API'yi kullanarak Bluetooth cihazlarının eşlemesini kaldırabilir. Bir tamamlayıcı cihaz CDM ilişkisi olarak yönetiliyorsa uygulama, ilişkili cihazdaki yeni removeBond(int) API'yi kullanarak Bluetooth bağını kaldırmayı tetikleyebilir. Uygulama, Bluetooth cihaz yayın etkinliğini dinleyerek ACTION_BOND_STATE_CHANGED bağ durumu değişikliklerini izleyebilir.

Güvenlik

Android 16 (API düzeyi 36) aşağıdaki güvenlik değişikliklerini içerir.

MediaStore sürüm kilitleme

Android 16 veya sonraki sürümleri hedefleyen uygulamalarda MediaStore#getVersion() artık her uygulamaya özgü olacak. Bu sayede, kötüye kullanımı ve parmak izi teknikleri için kullanımını önlemek amacıyla sürüm dizesinden tanımlayıcı özellikler kaldırılır. Uygulamalar bu sürümün biçimiyle ilgili herhangi bir varsayıma kapılmamalıdır. Uygulamalar, bu API'yi kullanırken sürüm değişikliklerini zaten ele almalıdır. Geliştirici, bu API'nin amaçlanan kapsamının dışında ek bilgiler elde etmeye çalışmadığı sürece çoğu durumda mevcut davranışlarını değiştirmeleri gerekmez.

Daha güvenli intent'ler

The Safer Intents feature is a multi-phase security initiative designed to improve the security of Android's intent resolution mechanism. The goal is to protect apps from malicious actions by adding checks during intent processing and filtering intents that don't meet specific criteria.

In Android 15 the feature focused on the sending app, now with Android 16, shifts control to the receiving app, allowing developers to opt-in to strict intent resolution using their app manifest.

Two key changes are being implemented:

  1. Explicit Intents Must Match the Target Component's Intent Filter: If an intent explicitly targets a component, it should match that component's intent filter.

  2. Intents Without an Action Cannot Match any Intent Filter: Intents that don't have an action specified shouldn't be resolved to any intent filter.

These changes only apply when multiple apps are involved and don't affect intent handling within a single app.

Impact

The opt-in nature means that developers must explicitly enable it in their app manifest for it to take effect. As a result, the feature's impact will be limited to apps whose developers:

  • Are aware of the Safer Intents feature and its benefits.
  • Actively choose to incorporate stricter intent handling practices into their apps.

This opt-in approach minimizes the risk of breaking existing apps that may rely on the current less-secure intent resolution behavior.

While the initial impact in Android 16 may be limited, the Safer Intents initiative has a roadmap for broader impact in future Android releases. The plan is to eventually make strict intent resolution the default behavior.

The Safer Intents feature has the potential to significantly enhance the security of the Android ecosystem by making it more difficult for malicious apps to exploit vulnerabilities in the intent resolution mechanism.

However, the transition to opt-out and mandatory enforcement must be carefully managed to address potential compatibility issues with existing apps.

Implementation

Developers need to explicitly enable stricter intent matching using the intentMatchingFlags attribute in their app manifest. Here is an example where the feature is opt-in for the entire app, but disabled/opt-out on a receiver:

<application android:intentMatchingFlags="enforceIntentFilter">
    <receiver android:name=".MyBroadcastReceiver" android:exported="true" android:intentMatchingFlags="none">
        <intent-filter>
            <action android:name="com.example.MY_CUSTOM_ACTION" />
        </intent-filter>
        <intent-filter>
            <action android:name="com.example.MY_ANOTHER_CUSTOM_ACTION" />
        </intent-filter>
    </receiver>
</application>

More on the supported flags:

Flag Name Description
enforceIntentFilter Enforces stricter matching for incoming intents
none Disables all special matching rules for incoming intents. When specifying multiple flags, conflicting values are resolved by giving precedence to the "none" flag
allowNullAction Relaxes the matching rules to allow intents without an action to match. This flag to be used in conjunction with "enforceIntentFilter" to achieve a specific behavior

Testing and Debugging

When the enforcement is active, apps should function correctly if the intent caller has properly populated the intent. However, blocked intents will trigger warning log messages like "Intent does not match component's intent filter:" and "Access blocked:" with the tag "PackageManager." This indicates a potential issue that could impact the app and requires attention.

Logcat filter:

tag=:PackageManager & (message:"Intent does not match component's intent filter:" | message: "Access blocked:")

Gizlilik

Android 16 (API düzeyi 36) aşağıdaki gizlilik değişikliklerini içerir.

Yerel Ağ İzni

LAN'daki cihazlara, INTERNET iznine sahip tüm uygulamalar erişebilir. Bu, uygulamaların yerel cihazlara bağlanmasını kolaylaştırır ancak kullanıcının parmak izini oluşturma ve konum için proxy olma gibi gizlilik etkileri de vardır.

Yerel Ağ Korumaları projesi, yerel ağa erişimi yeni bir çalışma zamanı izniyle sınırlayarak kullanıcının gizliliğini korumayı amaçlar.

Yayın planı

Bu değişiklik, sırasıyla 25Q2 ve TBD olmak üzere iki sürüm arasında uygulanacaktır. Geliştiricilerin 25Q2 için bu yönergelere uyması ve geri bildirim paylaşması zorunludur. Çünkü bu korumalar daha sonraki bir Android sürümünde zorunlu kılınacaktır. Ayrıca, aşağıdaki yönergeleri kullanarak örtülü yerel ağ erişimine bağlı senaryoları güncellemeleri ve kullanıcıların yeni izni reddetmesine ve iptal etmesine hazırlanmaları gerekir.

Etki

LNP, şu anki aşamada etkinleştirilmesi gereken bir özelliktir. Bu nedenle, yalnızca etkinleştirilen uygulamalar etkilenir. Katılma aşamasının amacı, uygulama geliştiricilerin uygulamalarının hangi bölümlerinin örtülü yerel ağ erişimine bağlı olduğunu anlamalarını sağlamaktır. Böylece, bir sonraki sürümde bu bölümler için izin koruması hazırlayabilirler.

Uygulamalar, kullanıcının yerel ağına şu yöntemlerle erişirse etkilenir:

  • Yerel ağ adreslerinde (ör. mDNS veya SSDP hizmeti keşfi protokolü) ham soketlerin doğrudan veya kitaplık aracılığıyla kullanımı
  • Yerel ağa erişen çerçeve düzeyindeki sınıfların (ör. NsdManager) kullanılması

Yerel ağ adresine giden ve gelen trafik için yerel ağ erişimi izni gerekir. Aşağıdaki tabloda sık karşılaşılan bazı durumlar listelenmiştir:

Uygulama Düşük Düzeyli Ağ İşlemi Yerel Ağ İzni Gerekli
Giden TCP bağlantısı oluşturma evet
Gelen TCP bağlantılarını kabul etme evet
UDP tek noktaya yayın, çok noktaya yayın veya yayın gönderme evet
Gelen UDP tek yayını, çoklu yayını veya yayını alma evet

Bu kısıtlamalar ağ yığınına derinlemesine uygulanır ve bu nedenle tüm ağ API'leri için geçerlidir. Yerel veya yönetilen kodda oluşturulan soketler, Cronet ve OkHttp gibi ağ kitaplıkları ve bunların üzerinde uygulanan tüm API'ler buna dahildir. Yerel ağdaki hizmetleri (ör. .local soneki olanlar) çözmeye çalışmak için yerel ağ izni gerekir.

Yukarıdaki kurallarla ilgili istisnalar:

  • Bir cihazın DNS sunucusu yerel ağdaysa bu sunucuya veya bu sunucudan gelen trafik (53 numaralı bağlantı noktasında) için yerel ağ erişim izni gerekmez.
  • Uygulama içi seçici olarak Çıkış Değiştirici'yi kullanan uygulamaların yerel ağ izinlerine ihtiyacı olmayacak (2025'in 4. çeyreğinde daha fazla bilgi verilecek).

Geliştirici Kılavuzu (Etkinleştirme)

Yerel ağ kısıtlamalarını etkinleştirmek için aşağıdakileri yapın:

  1. Cihazda 25Q2 Beta 3 veya sonraki bir sürümü yükleyin.
  2. Test edilecek uygulamayı yükleyin.
  3. adb'de Appcompat işaretini açın veya kapatın:

    adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
    
  4. Cihazı yeniden başlatın

Artık uygulamanızın yerel ağa erişimi kısıtlanmıştır ve yerel ağa erişme girişimleri soket hatalarına yol açar. Uygulama sürecinizin dışında yerel ağ işlemleri gerçekleştiren API'ler (ör. NsdManager) kullanıyorsanız bu API'ler, kayıt aşamasında etkilenmez.

Erişimi geri yüklemek için uygulamanıza NEARBY_WIFI_DEVICES izni vermeniz gerekir.

  1. Uygulamanın, manifest dosyasında NEARBY_WIFI_DEVICES iznini beyan ettiğinden emin olun.
  2. Ayarlar > Uygulamalar > [Uygulama Adı] > İzinler > Yakındaki cihazlar > İzin ver'e gidin.

Uygulamanızın yerel ağa erişimi geri yüklenir ve tüm senaryolarınız, uygulamayı kaydetmeden önceki gibi çalışır.

Yerel ağ koruması zorunlu kılındıktan sonra uygulama ağ trafiği şu şekilde etkilenecek:

İzin Giden LAN İsteği Giden/Gelen İnternet İsteği Gelen LAN İsteği
Verildi Works Works Works
İzin Verilmedi Başarısızlar Works Başarısızlar

Uygulama uyumluluğu işaretini devre dışı bırakmak için aşağıdaki komutu kullanın.

adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>

Hatalar

Bu kısıtlamalardan kaynaklanan hatalar, yerel ağ adresine gönderme veya gönderme varyantı çağrıldığında arayan sokete döndürülür.

Örnek hatalar:

sendto failed: EPERM (Operation not permitted)

sendto failed: ECONNABORTED (Operation not permitted)

Yerel Ağ Tanımı

Bu projedeki yerel ağ, kablosuz veya Ethernet gibi yayın yapabilen bir ağ arayüzünü kullanan bir IP ağıdır ancak hücresel (WWAN) veya VPN bağlantılarını içermez.

Aşağıdakiler yerel ağ olarak kabul edilir:

IPv4:

  • 169.254.0.0/16 // Bağlantı Yerel
  • 100.64.0.0/10 // CGNAT
  • 10.0.0.0/8 // RFC1918
  • 172.16.0.0/12 // RFC1918
  • 192.168.0.0/16 // RFC1918

IPv6:

  • Bağlantı yerel
  • Doğrudan bağlı rotalar
  • Thread gibi saplama ağlar
  • Birden fazla alt ağ (henüz belli değil)

Ayrıca, hem çok noktalı yayın adresleri (224.0.0.0/4, ff00::/8) hem de IPv4 yayın adresi (255.255.255.255) yerel ağ adresleri olarak sınıflandırılır.

Uygulamaya ait fotoğraflar

When prompted for photo and video permissions by an app targeting SDK 36 or higher on devices running Android 16 or higher, users who choose to limit access to selected media will see any photos owned by the app pre-selected in the photo picker. Users can deselect any of these pre-selected items, which will revoke the app's access to those photos and videos.