27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main
yerine android-latest-release
kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Değiştirilemez cihaz kimlikleri
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Android 6 ve sonraki sürümlerde, kablosuz ağ servis sağlayıcılarının ve paket analiz araçlarının, ağ isteklerinden kablosuz ağ yığınını kullanarak cihazın fabrika MAC adresini almaları kısıtlanmıştır. Android 10'dan itibaren, cihaz tanımlayıcılarına (kimlikler) erişimi
imtiyazlıizin düzeyine sahip uygulamalarla sınırlayan ek kısıtlamalar uygulanmaktadır. Bu sayede aşağıdakiler gibi cihaz kimlikleri korunur:
- telefon IMEI, MEID, ESN ve IMSI numaraları.
- derleme, SIM veya USB seri numaraları.
Cihaz kimliklerine kimler erişebilir?
Uygulamalar Android 9 veya önceki sürümleri hedefliyorsa bile cihaz kimlikleri tüm Android 10 cihazlarda kısıtlanır. Cihaz kimliklerine aşağıdakiler erişebilir:
Ayrıcalıklı paketlere erişim
Bir paketin, cihaz kimliklerine erişebilmesi için ayrıcalıklı olması gerekir. Manifest.permission
sınıfında
READ_PRIVILEGED_PHONE_STATE
iznine sahip olmalı ve privapp-permission.xml
dosyasında izin verilenler listesine eklenmiş olmalıdır. İzin verilenler listesi süreci hakkında bilgi edinmek için Ayrıcalıklı İzin İzin Verilenler Listesi başlıklı makaleyi inceleyin.
Özellikli olmayan bir paket için benzersiz kimlik alma hakkında bilgi edinmek istiyorsanız
Yaygın kullanım alanları ve kullanılacak uygun tanımlayıcı başlıklı makaleyi inceleyin.
Kısıtlanmış cihaz kimlikleri ve rastgele MAC adresleri
Cihaz kimliklerini daha da kısıtlamak için Android 10'daki tüm cihazlar hem keşif hem de ilişkili istekler için varsayılan olarak rastgele MAC adresleri iletir ve her SSID için farklı bir rastgele MAC adresine sahip olmalıdır. İstemci modu, yazılım erişim noktası (AP) veya kablosuz Direct kullanım alanlarında cihazın fabrika MAC adresini kullanmayın. Ayrıcalıklı uygulama olmayan, herkese açık API'lerden gizli kalmalıdır. Fabrika MAC adresinin döndürülmesini gerektiren ayrıcalıklı uygulamaların LOCAL_MAC_ADDRESS
iznine sahip olması gerekir.
Kullanıcılar, her SSID'ye atanan varsayılan rastgele MAC adresini kullanmaya devam edebilir.
Bu seçenek, Ayarlar > Ağ ayrıntıları bölümündeki Gizlilik altında görüntülenebilir. Rastgele MAC adresi alma hakkında bilgi edinmek için
Rastgele MAC adresleri başlıklı makaleyi inceleyin.
Şekil 1. Ağ ayrıntılarındaki Gizlilik bölümünde MAC adresi rastgele olarak gösterilir.
Cihaz kimliği API'lerini çağıran uygulamalar
Cihaz kimliği API'lerini çağıran uygulamalar Android 10 şartlarını karşılamalıdır. Aksi takdirde, cihaz kimliklerine erişmeye çalıştıklarında aşağıdakiler döndürülür:
- Android 10'u hedefleyen uygulamalar
- Android 9 veya önceki sürümleri hedefleyen uygulamalar
READ_PHONE_STATE
iznine sahipse null
yanıtı veya yer tutucu veriler döndürülür.
- Aksi takdirde cihaz kimliği API'leri, çağrılan yöntemin adını ve çağıran uygulamanın istenen kimliğe erişme koşullarını karşılamadığını belirten bir
SecurityException
isteği gönderir.
Değiştirilemez cihaz kimlikleri hakkında daha fazla bilgi için Sıfırlanamayan cihaz tanımlayıcıları ve benzersiz tanımlayıcılar için en iyi uygulamalar başlıklı makaleleri inceleyin.
Test
Uygulamaların cihaz seri numarasına ve geçerli olduğu durumlarda IMEI veya MEID, SIM seri numarası ve abone kimliğine erişmesi engellenmelidir. Bu kimliklere erişme izni olan uygulamaların, Cihaz kimliklerine kimler erişebilir? bölümünde listelenen ölçütlerden birini de karşılaması gerekir.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Immutable device IDs\n\nIn Android 6 and higher, Wi-Fi service providers and packet analyzers have\nbeen restricted from retrieving a device's factory MAC address through the\nWi-Fi stack from network requests. Starting in Android 10, additional restrictions are in place that limit access to device\nidentifiers (IDs) to apps with the [privileged](/docs/core/permissions/perms-allowlist)[permission\nlevel](https://developer.android.com/reference/android/R.attr.html#protectionLevel). This protects device IDs such as\n\n- telephony IMEI, MEID, ESN, and IMSI numbers.\n- build, SIM, or USB serial numbers.\n\n### Who can access device IDs\n\nDevice IDs are restricted on all Android 10\ndevices, even if apps target Android 9 or lower. Device IDs can be accessed by:\n\n- The default SMS app.\n- Apps with both [READ_PRIVILEGED_PHONE_STATE](/docs/core/permissions/perms-allowlist#customizing-allowlists) permission in the `\n `[Manifest.permission](https://developer.android.com/reference/android/Manifest.permission) class, and allowlisting in the `privapp-permission.xml` file. These must also be loaded in the `priv-app` directory.\n- Apps with carrier privileges as defined in [UICC Carrier\n Privileges](/docs/core/connect/uicc).\n- A device owner or profile owner with [READ_PHONE_STATE](https://developer.android.com/reference/android/Manifest.permission.html#READ_PHONE_STATE) permission granted in the [Manifest.permission](https://developer.android.com/reference/android/Manifest.permission) class. (Allowlisting isn't required.)\n\n#### Privileged packages access\n\nA package must be privileged to access device IDs. It must have\n[READ_PRIVILEGED_PHONE_STATE](/docs/core/permissions/perms-allowlist#customizing-allowlists) permission in the\n`Manifest.permission` class, and be allowlisted in the\n`privapp-permission.xml` file. For information on the allowlist\nprocess, see [Privileged\nPermission Allowlisting](/docs/core/permissions/perms-allowlist).\n\nFor information on getting a unique ID for a *nonprivileged* package,\nrefer to [Common use cases and the appropriate identifier to use](https://developer.android.com/training/articles/user-data-ids#common-use-cases).\n\n#### Restricted device IDs and randomized MAC addresses\n\nTo further restrict device IDs, all devices on Android 10 transmit randomized MAC addresses by default for both\nprobe and associated requests, and must have a different randomized MAC address\nfor each SSID. Don't use the device factory MAC address in client mode, soft\naccess point (AP), or Wi-Fi Direct use cases. It must remain hidden from\npublicly accessible APIs that aren't privileged apps. Privileged apps that\nrequire the factory MAC address to be returned are required to have\n`LOCAL_MAC_ADDRESS` permission.\n\nUsers have the option to keep the *default randomized* MAC address that's assigned to each SSID.\nThe option is viewable under **Privacy** in\n**Settings** \\\u003e **Network details** . To learn about\nobtaining a randomized MAC address see [Randomized MAC addresses](https://developer.android.com/about/versions/10/privacy/changes#data-ids).\n\n**Figure 1.**MAC address shows as randomized under Privacy in Network details.\n\n#### Apps that invoke device ID APIs\n\nApps that invoke device ID APIs must meet the Android 10 requirements. Otherwise, when they try to access\ndevice IDs the following is returned:\n\n- Apps targeting Android 10\n - [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) is thrown from the device ID APIs.\n- Apps targeting Android 9 or earlier\n - If they have the [READ_PHONE_STATE](https://developer.android.com/reference/android/Manifest.permission.html#READ_PHONE_STATE) permission, either a `null` response or placeholder data is returned.\n - If they don't, the device ID APIs throw [SecurityException](https://developer.android.com/reference/java/lang/SecurityException) that contains the name of the method called, and an indication that the calling app doesn't meet the requirements to access the requested ID.\n\nFor more on immutable device IDs see [Nonresettable\ndevice identifiers](https://developer.android.com/about/versions/10/privacy/changes#data-ids) and [best practices\nfor unique identifiers](https://developer.android.com/training/articles/user-data-ids).\n\n### Testing\n\nApps *must* be prevented from accessing the device serial number and,\nwhere applicable, IMEI or MEID, SIM serial number, and subscriber ID. Apps with\npermission to access these IDs must also meet one of the criteria listed under\n[Who can access device IDs](#who-access)."]]