是否批准在Android上进行后台定位



我用Qt开发了一个Android应用程序。不久前,我收到了一封电子邮件";批准背景位置";来自Play Store。我不熟悉Java,也不理解这个问题。我的应用程序仅在应用程序可见(前景(时使用GPS,但在应用程序不可见(背景(时不使用GPS。

我的Manifest.xml如下所示:

<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="28"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.vending.BILLING"/>

现在我在Play Store 上找到了

...the ACCESS_BACKGROUND_LOCATION permission only affects an app's access to location when it runs in the background.

对我来说,这意味着因为我不使用ACCESS_BACKGROUND_LOCATION,所以我的应用程序只在可见(前景(时使用GPS。那么问题出在哪里呢?谢谢

我也遇到过类似的问题。我仔细检查了我的AndroidManifest.xml,其中没有ACCESS_BACKGROUND_LOCATION

我使用C++中的QGeoPositionInfoSource来获得定期的位置更新。我从未调用过stopUpdates((函数,该函数必须修复。当应用程序进入后台时,必须调用它,例如:onPause

这是一个非常有用的视频和线索,以及一些其他有用的阅读材料:

  • https://youtu.be/xTVeFJZQ28c?t=394
  • https://developer.android.com/training/location/permissions
  • https://youtu.be/xTVeFJZQ28c?t=394
  • https://developer.android.com/about/versions/oreo/background-location-limits

有一个信号QGuiApplication::applicationStateChanged可以用于此操作,示例代码:

if (const auto *const gui =
qobject_cast<const QGuiApplication *const>(qApp)) {
connect(gui, &QGuiApplication::applicationStateChanged, this,
[&](Qt::ApplicationState state) {
switch (state) {
case Qt::ApplicationState::ApplicationActive:
source->startUpdates();
break;
default:
source->stopUpdates();
}
});
}

QGeoPositionInfoSource的指针。

最新更新