Android 10 ve 11, kullanıcıların uygulamaları için cihaz üzerinde daha fazla kontrole sahip olmalarını sağlar.
Android 11'de çalışan bir uygulama konum erişimi istediğinde, kullanıcıların dört seçeneği vardır:
- Her zaman izin ver
- Yalnızca uygulama kullanılırken izin ver (Android 10'da)
- Yalnızca bir kez (Android 11'de)
- Reddet
Android 10
Android 11
Bu codelab'de, konum güncellemeleri almayı nasıl yapacağınızı ve Android'in özellikle Android 10 ve 11 sürümlerinden herhangi birinde nasıl konum destekleyeceğinizi öğreneceksiniz. Codelab'in sonunda, konum güncellemeleri almak için mevcut en iyi uygulamaları takip eden bir uygulamanız olabilir.
Ön koşullar
- Android geliştirme konusunda bilgi sahibi olma
- Etkinlikler, hizmetler ve izinler hakkında bilgi sahibi olma
Ne yaparsınız?
- Android'de konumla ilgili en iyi uygulamaları takip edin.
- Ön planda konum izinlerini kullanın (kullanıcı, uygulamanız kullanılırken cihazınızın konumuna erişmesini istediğinde).
- Abone olmak ve konuma aboneliği iptal etmek için kod ekleyerek mevcut bir uygulamayı değiştirerek konum erişimi isteme desteği ekleyin.
- Android 10 ve 11 için uygulamaya destek ekleyerek ön planda konumdayken veya kullanımdayken konuma erişim mantığı ekleyin.
Gerekenler
- Kodu çalıştırmak için Android Studio 3.4 veya sonraki sürümler
- Android 10 ve 11'in geliştirici önizlemesini çalıştıran bir cihaz/emülatör
Starter projesi deposunu klonlama
Mümkün olduğunca hızlı bir şekilde başlamanız için bu başlangıç projesinden yararlanabilirsiniz. Git'i yüklediyseniz aşağıdaki komutu çalıştırabilirsiniz:
git clone https://github.com/googlecodelabs/while-in-use-location
Doğrudan GitHub sayfasını ziyaret edebilirsiniz.
Git'iniz yoksa projeyi zip dosyası olarak alabilirsiniz:
Projeyi içe aktar
Android Studio'yu açın, "Karşılama ekranından mevcut bir Android Studio projesini açın" ve proje dizinini açın.
Proje yüklendikten sonra Git'in yerel değişikliklerinizin tümünü izlemediğini belirten bir uyarı da görebilirsiniz. Yoksay'ı tıklayabilirsiniz. (Değişiklikleri Git deposuna geri aktaramazsınız.)
Android görünümündeyseniz proje penceresinin sol üst köşesinde aşağıdaki gibi bir resim görürsünüz. (Proje görünümündeyseniz aynı şeyi görmek için projeyi genişletmeniz gerekir.)
İki klasör vardır (base
ve complete
). Bunların her biri "Modül" olarak bilinir.
Android Studio'nun projeyi arka planda ilk kez derlemesinin birkaç saniye sürebileceğini lütfen unutmayın. Bu süre zarfında, Android Studio'nun alt kısmındaki durum çubuğunda şu mesajı görürsünüz:
Kod değişiklikleri yapmadan önce Android Studio'nun dizine eklemeyi ve proje oluşturmayı bitirene kadar bekleyin. Bu, Android Studio'nun gerekli tüm bileşenleri almasını sağlar.
Dildeki değişikliklerin geçerli olması için yeniden yüklensin mi? gibi bir istem alırsanız Evet'i seçin.
Başlangıç projesini anlama
Uygulamada kurulum yaptınız ve konum isteğinde bulunmaya hazırsınız. Başlangıç noktası olarak base
modülünü kullanın. Her adımda base
modülüne kod ekleyin. Bu codelab'i tamamladığınızda base
modülündeki kod complete
modülünün içeriğiyle eşleşmelidir. complete
modülü, çalışmalarınızı kontrol etmek veya herhangi bir sorunla karşılaşırsanız referansta bulunmak için kullanılabilir.
Temel bileşenler aşağıdakileri içerir:
MainActivity
: Kullanıcının, uygulamanın cihaz konumuna erişmesine izin veren kullanıcı arayüzüLocationService
: Konum değişikliklerine abone olan ve abonelikten çıkan bir kullanıcı, uygulama etkinliğinden ayrılırsa kendisini bir ön plan hizmetine tanıtan (bildirimle) bir hizmettir. Konum kodunu buraya eklersiniz.Util
-Location
sınıfı için uzantı işlevleri ekler veSharedPreferences
konumuna (basitleştirilmiş veri katmanı) konum kaydeder.
Emülatör kurulumu
Android emülatörü ayarlama hakkında bilgi edinmek için Emülatörde çalıştırma başlıklı makaleyi inceleyin.
Başlangıç projesini çalıştırma
Uygulamanızı çalıştırın.
- Android cihazınızı bilgisayarınıza bağlayın veya bir emülatör başlatın. (Cihazda Android 10 veya sonraki bir sürümün yüklü olduğundan emin olun.)
- Araç çubuğunda, açılır seçiciden
base
yapılandırmasını seçin ve Çalıştır'ı tıklayın:
- Cihazınızda aşağıdaki uygulamanın göründüğüne dikkat edin:
Çıkış ekranında konum bilgisinin görünmediğini fark edebilirsiniz. Bunun nedeni, konum kodunu henüz eklememiş olmanızdır.
Kavramlar
Bu codelab'in amacı, konum güncellemelerini nasıl alacağınızı göstermek ve bunun sonucunda Android 10 ve Android 11'i desteklemektir.
Ancak kodlamaya başlamadan önce temel bilgileri incelemeniz önerilir.
Konum erişimi türleri
Codelab'in başından beri dört farklı konum erişimi seçeneği görebilirsiniz. Bunların ne anlama geldiğine göz atın:
- Yalnızca uygulamayı kullanırken izin ver
- Bu seçenek, çoğu uygulama için önerilen seçenektir. "Kullanımda" veya "yalnızca ön planda" erişim olarak da bilinen bu seçenek, Android 10'da eklenmiş olup geliştiricilerin yalnızca uygulama aktif olarak kullanılırken konum almasına olanak tanır. Aşağıdaki durumlardan biri geçerli olan uygulamalar etkin olarak değerlendirilir:
- Bir etkinlik görünüyor.
- Devam eden bir bildirimle ön plan hizmeti çalışıyor.
- Yalnızca bir defa
- Bu ayar, Android 11'de eklenen Yalnızca uygulamayı kullanırken izin ver ayarıyla aynıdır, ancak sınırlı bir süre boyunca geçerlidir. Daha fazla bilgi için Tek seferlik izinler bölümüne bakın.
- Reddet
- Bu seçenek, konum bilgilerine erişimi engeller.
- Her zaman izin ver
- Bu seçenek konum erişimine her zaman izin verir ancak Android 10 ve sonraki sürümler için ek izin gerektirir. Ayrıca, geçerli bir kullanım alanına sahip olduğunuzdan ve konum politikalarına uyduğunuzdan emin olmanız gerekir. Nadiren kullanıldığı için bu codelab'de bu seçeneği kullanmayacaksınız. Ancak, geçerli bir kullanım alanınız varsa ve arka planda konuma erişim de dahil olmak üzere tüm zaman konumlarının nasıl doğru şekilde ele alınacağını öğrenmek istiyorsanız LocationUpdatesArkaKotlin örneğini inceleyin.
Hizmetler, ön plan hizmetleri ve bağlama
Yalnızca uygulamayı kullanırken izin ver konum güncellemelerini tam olarak desteklemek için, kullanıcının uygulamanızdan ayrıldığı zamanı dikkate almanız gerekir. Bu durumda güncelleme almaya devam etmek isterseniz bir ön plan Service
oluşturmanız ve bunu bir Notification
ile ilişkilendirmeniz gerekir.
Ayrıca, uygulamanız görünür olduğunda ve kullanıcı uygulamanızdan ayrıldığında konum güncellemeleri istemek için aynı Service
'yi kullanmak istiyorsanız bu Service
öğesini kullanıcı arayüzü öğesine bağlamanız/bağlantısını kaldırmanız gerekir.
Bu codelab yalnızca konum güncellemeleri almaya odaklandığından ihtiyaç duyduğunuz tüm kodu ForegroundOnlyLocationService.kt
sınıfında bulabilirsiniz. Sınıfa ve MainActivity.kt
özelliğine göz atarak birlikte nasıl çalıştıklarını görebilirsiniz.
Daha fazla bilgi için Hizmetlere genel bakış ve Sınırlı hizmetlere genel bakış başlıklı makaleleri inceleyin.
İzinler
NETWORK_PROVIDER
veya GPS_PROVIDER
üzerinden konum güncellemeleri almak için Android manifest dosyanızda sırasıyla ACCESS_COARSE_LOCATION
veya ACCESS_FINE_LOCATION
iznini beyan ederek kullanıcının iznini istemeniz gerekir. Bu izinler olmadan uygulamanız çalışma zamanında konuma erişim isteğinde bulunamaz.
Bu izinler, uygulamanız Android 10 veya sonraki bir sürümü çalıştıran cihazlarda kullanıldığında Yalnızca bir kez ve Yalnızca uygulamayı kullanırken izin ver durumlarını kapsar.
Location
Uygulamanız, com.google.android.gms.location
paketindeki sınıflar üzerinden, desteklenen konum hizmetleri grubuna erişebilir.
Ana sınıflara bakın:
FusedLocationProviderClient
- Bu, konum çerçevesinin merkezi bileşenidir. Oluşturulduktan sonra, konum güncellemeleri istemek ve bilinen son konumu almak için bu adresi kullanırsınız.
LocationRequest
- Bu, istekler için hizmet kalitesi parametrelerini (güncellemeler, öncelikler ve doğruluk için aralıklar) içeren bir veri nesnesidir. Bu, konum güncellemeleri istediğinizde
FusedLocationProviderClient
adresine iletilir. LocationCallback
- Bu parametre, cihaz konumu değiştiğinde veya artık belirlenemediğinde bildirim almak için kullanılır. Bu işlem, veritabanınıza kaydetmek üzere
Location
alabileceğiniz birLocationResult
iletir.
Artık neler yaptığınıza dair temel bir fikriniz olduğuna göre kodu kullanmaya başlayabilirsiniz.
Bu codelab'de en yaygın konum seçeneği üzerinde durulur: Yalnızca uygulamayı kullanırken izin ver.
Konum güncellemelerini almak için uygulamanızda görünür bir etkinlik veya ön planda çalışan bir hizmet (bildirimle) olmalıdır.
İzinler
Bu codelab'in amacı, konum izinlerini nasıl isteyeceğinizi değil, konum güncellemelerini nasıl alacağınızı göstermektir. Bu nedenle izin temelli kod sizin için önceden yazılmıştır. Konuyu anladıysanız atlayabilirsiniz.
İzinlerle ilgili öne çıkan noktalar şunlardır (bu kısım için herhangi bir işlem yapmanız gerekmez):
AndroidManifest.xml
içerisinde hangi izni kullandığınızı bildirin.- Konum bilgilerine erişmeyi denemeden önce, kullanıcının uygulamanıza izin verip vermediğini kontrol edin. Uygulamanız henüz izin almadıysa erişim isteğinde bulunun.
- Kullanıcının izin seçimini yönetin. (Bu kodu
MainActivity.kt
adresinde görebilirsiniz.)
AndroidManifest.xml
içinde veya MainActivity.kt
içinde TODO: Step 1.0, Review Permissions
araması yaparsanız izinler için yazılmış tüm kodu görürsünüz.
Daha fazla bilgi edinmek için İzinlere genel bakış başlıklı makaleyi inceleyin.
Şimdi, konum kodu yazmaya başlayın.
Konum güncellemeleri için gereken temel değişkenleri inceleyin
base
modülünde TODO: Step 1.1, Review variables
şunu arayın:
ForegroundOnlyLocationService.kt
dosya.
Bu adımda herhangi bir işlem yapmanız gerekmez. Konum güncellemelerini almak için kullandığınız önemli sınıfları ve değişkenleri anlamak için yorumlarla birlikte aşağıdaki kod bloğunu incelemeniz yeterlidir.
// TODO: Step 1.1, Review variables (no changes).
// FusedLocationProviderClient - Main class for receiving location updates.
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
// LocationRequest - Requirements for the location updates, i.e., how often you
// should receive updates, the priority, etc.
private lateinit var locationRequest: LocationRequest
// LocationCallback - Called when FusedLocationProviderClient has a new Location.
private lateinit var locationCallback: LocationCallback
// Used only for local storage of the last known location. Usually, this would be saved to your
// database, but because this is a simplified sample without a full database, we only need the
// last location to create a Notification if the user navigates away from the app.
private var currentLocation: Location? = null
FusedLocationProviderClient ilk kullanıma hazırlama sürecini inceleyin
base
modülündeki ForegroundOnlyLocationService.kt
dosyasında TODO: Step 1.2, Review the FusedLocationProviderClient
araması yapın. Kodunuz şu şekilde görünmelidir:
// TODO: Step 1.2, Review the FusedLocationProviderClient.
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
Önceki yorumlarda belirtildiği gibi bu konu, konum güncellemelerini almanın ana sınıfıdır. Değişken sizin için zaten başlatıldı, ancak nasıl başlatıldığını anlamak için kodu incelemek önemlidir. Daha sonra konum güncellemeleri istemek için bazı kodları buraya eklersiniz.
LocationRequest'i başlatma
base
modülündekiForegroundOnlyLocationService.kt
dosyasındaTODO: Step 1.3, Create a LocationRequest
araması yapın.- Yorumdan sonra aşağıdaki kodu ekleyin.
LocationRequest
başlatma kodu, isteğiniz için ihtiyacınız olan ekstra hizmet parametrelerinin kalitesini (aralıklar, maksimum bekleme süresi ve öncelik) ekler.
// TODO: Step 1.3, Create a LocationRequest.
locationRequest = LocationRequest().apply {
// Sets the desired interval for active location updates. This interval is inexact. You
// may not receive updates at all if no location sources are available, or you may
// receive them less frequently than requested. You may also receive updates more
// frequently than requested if other applications are requesting location at a more
// frequent interval.
//
// IMPORTANT NOTE: Apps running on Android 8.0 and higher devices (regardless of
// targetSdkVersion) may receive updates less frequently than this interval when the app
// is no longer in the foreground.
interval = TimeUnit.SECONDS.toMillis(60)
// Sets the fastest rate for active location updates. This interval is exact, and your
// application will never receive updates more frequently than this value.
fastestInterval = TimeUnit.SECONDS.toMillis(30)
// Sets the maximum time when batched location updates are delivered. Updates may be
// delivered sooner than this interval.
maxWaitTime = TimeUnit.MINUTES.toMillis(2)
priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}
- Her birinin nasıl çalıştığını anlamak için yorumları okuyun.
LocationCallback'i başlatma
base
modülündekiForegroundOnlyLocationService.kt
dosyasındaTODO: Step 1.4, Initialize the LocationCallback
araması yapın.- Yorumdan sonra aşağıdaki kodu ekleyin.
// TODO: Step 1.4, Initialize the LocationCallback.
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
super.onLocationResult(locationResult)
if (locationResult?.lastLocation != null) {
// Normally, you want to save a new location to a database. We are simplifying
// things a bit and just saving it as a local variable, as we only need it again
// if a Notification is created (when user navigates away from app).
currentLocation = locationResult.lastLocation
// Notify our Activity that a new location was added. Again, if this was a
// production app, the Activity would be listening for changes to a database
// with new locations, but we are simplifying things a bit to focus on just
// learning the location side of things.
val intent = Intent(ACTION_FOREGROUND_ONLY_LOCATION_BROADCAST)
intent.putExtra(EXTRA_LOCATION, currentLocation)
LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(intent)
// Updates notification content if this service is running as a foreground
// service.
if (serviceRunningInForeground) {
notificationManager.notify(
NOTIFICATION_ID,
generateNotification(currentLocation))
}
} else {
Log.d(TAG, "Location information isn't available.")
}
}
}
Burada oluşturduğunuz LocationCallback
, yeni bir konum güncellemesi olduğunda FusedLocationProviderClient
uygulamasının çağıracağı geri çağırmadır.
Geri çağırmanızda önce bir LocationResult
nesnesi kullanarak en son konumu alırsınız. Bunun ardından, bir yerel yayın (etkinse) kullanarak yeni konumunuzu Activity
olarak bildirir veya bu hizmet bir ön plan Service
olarak çalışıyorsa Notification
uygulamasını güncellersiniz.
- Her bölümün ne işe yaradığını anlamak için yorumları okuyun.
Konum değişikliklerine abone olma
Her şeyi başlattığınıza göre güncellemeleri almak istediğinizi FusedLocationProviderClient
adlı kullanıcıya bildirmeniz gerekir.
base
modülündekiForegroundOnlyLocationService.kt
dosyasındaStep 1.5, Subscribe to location changes
araması yapın.- Yorumdan sonra aşağıdaki kodu ekleyin.
// TODO: Step 1.5, Subscribe to location changes.
fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, Looper.myLooper())
requestLocationUpdates()
araması, FusedLocationProviderClient
kullanıcıya konum güncellemelerini almak istediğinizi bildirir.
Daha önce tanımladığınız LocationRequest
ve LocationCallback
öğelerini muhtemelen biliyorsunuz. Bunlar, FusedLocationProviderClient
için isteğinizle ilgili hizmet kalitesi parametrelerini ve bir güncelleme olduğunda çağrılması gereken yöntemi belirtir. Son olarak Looper
nesnesi, geri çağırmanın ileti dizisini belirtir.
Bu kodun bir try/catch
ifadesi içinde olduğunu da fark edebilirsiniz. Uygulamanız konum bilgilerine erişim iznine sahip olmadığında SecurityException
kurulduğundan bu yöntem için bu tür bir engelleme gerekir.
Konum değişikliklerini iptal etme
Uygulamanın artık konum bilgilerine erişmesi gerekmiyorsa konum güncellemeleri aboneliğinden çıkmak önemlidir.
base
modülündekiForegroundOnlyLocationService.kt
dosyasındaTODO: Step 1.6, Unsubscribe to location changes
araması yapın.- Yorumdan sonra aşağıdaki kodu ekleyin.
// TODO: Step 1.6, Unsubscribe to location changes.
val removeTask = fusedLocationProviderClient.removeLocationUpdates(locationCallback)
removeTask.addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d(TAG, "Location Callback removed.")
stopSelf()
} else {
Log.d(TAG, "Failed to remove Location Callback.")
}
}
removeLocationUpdates()
yöntemi, FusedLocationProviderClient
cihazınıza artık LocationCallback
cihazınızla ilgili konum güncellemeleri almak istemediğinizi bildiren bir görev oluşturur. addOnCompleteListener()
, tamamlanması için geri çağırmayı sağlar ve Task
işlemini yürütür.
Önceki adımda olduğu gibi, bu kodun bir try/catch
ifadesi içinde olduğunu fark etmiş olabilirsiniz. Uygulamanız, konum bilgilerine erişme izni olmadığında SecurityException
gerçekleştiği için bu yöntem için bu tür bir engelleme gerekir
Abone olma/abonelikten çıkma kodunu içeren yöntemlerin ne zaman çağrıldığını merak edebilirsiniz. Kullanıcı düğmeye dokunduğunda ana sınıfta tetiklenir. Bu yayını görmek istiyorsanız MainActivity.kt
sınıfına göz atın.
Uygulamayı çalıştır
Uygulamanızı Android Studio'dan çalıştırıp konum düğmesini deneyin.
Çıkış ekranında konum bilgilerini görmeniz gerekir. Bu, Android 9 için tamamen işlevsel bir uygulamadır.
Bu bölümde Android 10 desteği ekleyebilirsiniz.
Uygulamanız konum değişikliklerine zaten abone olduğundan yapılacak çok fazla iş var.
Hatta, tek yapmanız gereken ön plan hizmetinizin konum amaçlı olarak kullanıldığını belirtmektir.
Hedef SDK 29
base
modülündekibuild.gradle
dosyasındaTODO: Step 2.1, Target SDK 10
araması yapın.- Şu değişiklikleri yapın:
compileSdkVersion
değerini29
olarak ayarlayın.buildToolsVersion
değerini"29.0.3"
olarak ayarlayın.targetSdkVersion
değerini29
olarak ayarlayın.
Kodunuz şu şekilde görünmelidir:
android {
// TODO: Step 2.1, Target Android 10.
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.example.android.whileinuselocation"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
...
}
Bunu yaptıktan sonra, projenizi senkronize etmeniz istenir. Sync Now'ı (Şimdi Senkronize Et) tıklayın.
Sonrasında uygulamanız Android 10 için neredeyse hazır olur.
Ön Plan Hizmet Türü Ekleme
Android 10'da, kullanım sırasında konum erişimine ihtiyacınız varsa ön plan hizmetinizin türünü eklemeniz gerekir. Bu durumda, konum bilgilerini almak için kullanılır.
base
modülünde, AndroidManifest.xml
içinde TODO: 2.2, Add foreground service type
öğesini arayın ve <service>
öğesine aşağıdaki kodu ekleyin:
android:foregroundServiceType="location"
Kodunuz şu şekilde görünmelidir:
<application>
...
<!-- Foreground services in Android 10+ require type. -->
<!-- TODO: 2.2, Add foreground service type. -->
<service
android:name="com.example.android.whileinuselocation.ForegroundOnlyLocationService"
android:enabled="true"
android:exported="false"
android:foregroundServiceType="location" />
</application>
İşte oldu. Uygulamanız, Android'de konumla ilgili en iyi uygulamaları izleyerek "kullanım sırasında" Android 10 konumunu destekler.
Uygulamayı çalıştır
Uygulamanızı Android Studio'dan çalıştırıp konum düğmesini deneyin.
Her şey eskisi gibi çalışır ancak artık Android 10'da çalışıyor. Daha önce konumların izinlerini kabul etmediyseniz artık izin ekranını göreceksiniz.
Bu bölümde Android 11'i hedefliyorsunuz.
Müjde! build.gradle
dosyası dışında herhangi bir dosyada değişiklik yapmanız gerekmez.
Hedef SDK R
base
modülündekibuild.gradle
dosyasındaTODO: Step 2.1, Target SDK
kodunu arayın.- Şu değişiklikleri yapın:
compileSdkVersion
ile"android-R"
arasındatargetSdkVersion
ile"R"
arasında
Kodunuz şu şekilde görünmelidir:
android {
// TODO: Step 2.1, Target Android 10.
compileSdkVersion "android-R"
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.android.whileinuselocation"
minSdkVersion 26
targetSdkVersion "R"
versionCode 1
versionName "1.0"
}
...
}
Bunu yaptıktan sonra, projenizi senkronize etmeniz istenir. Sync Now'ı (Şimdi Senkronize Et) tıklayın.
Sonrasında uygulamanız Android 11 için hazır olur.
Uygulamayı çalıştır
Uygulamanızı Android Studio'dan çalıştırın ve düğmeyi tıklamayı deneyin.
Her şey eskisi gibi çalışır ancak artık Android 11'de çalışıyor. Daha önce konumların izinlerini kabul etmediyseniz artık izin ekranını göreceksiniz.
Bu codelab'de gösterildiği şekilde konum izinlerini kontrol ederek ve isteyerek, uygulamanızın cihaz konumu hakkındaki erişim düzeyini başarıyla takip edebilir.
Bu sayfada konum izinleriyle ilgili birkaç en iyi uygulama listelenmektedir. Kullanıcılarınızın güvenliğini sağlama hakkında daha fazla bilgi için Uygulama izinleri en iyi uygulamaları başlıklı makaleye bakın.
Yalnızca ihtiyacınız olan izinleri isteyin
Yalnızca gerektiğinde izin isteyin. Örneğin:
- Kesinlikle gerekli olmadıkça uygulama başlatılırken konum izni istemeyin.
- Uygulamanız Android 10 veya sonraki bir sürümü hedefliyorsa ve ön plan hizmetiniz varsa manifest dosyasında
foregroundServiceType
"location"
belirtin. - Kullanıcı Konumuna Daha Güvenli ve Daha Şeffaf Erişim bölümünde açıklandığı gibi geçerli bir kullanım alanınız olmadığı sürece arka planda konum izni istemeyin.
İzin verilmemesi durumunda kontrollü azalmayı destekleme
İyi bir kullanıcı deneyimi sağlamak için uygulamanızı aşağıdaki durumları sorunsuzca işleyebilecek şekilde tasarlayın:
- Uygulamanızın konum bilgilerine erişimi yok.
- Uygulamanız arka planda çalışırken konum bilgilerine erişemiyor.
Android'de konum güncellemelerini nasıl alacağınızı öğrenerek, en iyi uygulamaları göz önünde bulundurun.
Daha fazla bilgi
- Geçerli bir kullanım alanınız varsa arka plan konumunu kullanmaya ilişkin tam örnek
- Konum güncellemesi isteme