Android 10 在2019年9月份正式發(fā)布叽奥,帶來(lái)了一個(gè)非常重大的GPS權(quán)限改變。為用戶提供了 僅在使用此應(yīng)用時(shí)允許
何陆。一旦用戶選擇“僅在使用此應(yīng)用時(shí)允許”率触,就會(huì)導(dǎo)致APP在后臺(tái)或者鎖屏?xí)r候無(wú)法正常記錄GPS軌跡,這個(gè)對(duì)像滴滴出行虫埂、共享單車祥山、跑步軟件影響非常的大。
針對(duì)這個(gè)變化掉伏,Google也給出了新的 解決方案缝呕。
第一步:升級(jí)SDK
修改build.gradle,升級(jí)APP的 compileSdkVersion
和 targetSdkVersion
斧散。
android {
compileSdkVersion 29
defaultConfig {
targetSdkVersion 29
}
}
第二步:增加后臺(tái)定位權(quán)限
修改 AndroidManifest.xml
文件供常,增加 ACCESS_BACKGROUND_LOCATION
權(quán)限,并且為對(duì)應(yīng)的服務(wù)增加 android:foregroundServiceType="location"
鸡捐。
<manifest >
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<application>
<service android:name=".ExampleService" android:foregroundServiceType="location" />
</application>
</manifest>
第三步:申請(qǐng)后臺(tái)定位權(quán)限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ActivityCompat.requestPermissions(this,arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION,
ACCESS_BACKGROUND_LOCATION
),101)
} else {
ActivityCompat.requestPermissions(this,arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION),101)
}
通過(guò)以上方法栈暇,就可以獲取用戶是否允許APP后臺(tái)定位,如果用戶不允許箍镜,就會(huì)提示下面的對(duì)話框源祈。