requestLocationUpdates 不适用于 Android 11 和 Android 11 12
我正在尝试调用我的纬度 &手机每5秒的经度数据。 此代码适用于 Android 9 和 10,但不适用于 11 和 12。 初始位置已更新,但后续位置根本未更新。 需要精细和粗略位置权限。可能是什么问题?
if (!isGPSEnabled && !isNetworkEnabled) {
lat = 0;
lon = 0;
} else {
this.isGetLocation = true;
// GPS
if (isGPSEnabled) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0, this);
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location != null && location.getTime() > Calendar.getInstance().getTimeInMillis() - 5000) {
gpsUse = true;
}
if (location != null) {
lat = location.getLatitude();
lon = location.getLongitude();
}
}
}
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
0,
0, this);
if (locationManager != null) {
location4 = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location4 != null && location4.getTime() > Calendar.getInstance().getTimeInMillis() - 5000) {
networkUse = true;
}
if (location4 != null) {
lat = location4.getLatitude();
lon = location4.getLongitude();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
- 我添加了AndroidManifest.xml的代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.HanyangHCI.crc_test">
<!-- <uses-permission android:name="android.permission.INTERNET"/>-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29" />
<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_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_SERVICE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_hci"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:requestLegacyExternalStorage="true"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name = ".Collecting"
android:screenOrientation="portrait" />
<service android:name=".Collecting"
android:foregroundServiceType="location"/>
<activity android:name=".Survay"
android:screenOrientation="portrait"/>
<activity android:name=".Survay2"
android:screenOrientation="portrait"/>
<activity android:name=".PopUp"
android:theme="@android:style/Theme.Dialog"
android:excludeFromRecents="true" />
<service android:name=".BackGroundCollecting"
android:enabled="true"
android:stopWithTask="false"
android:foregroundServiceType="location">
<intent-filter>
<action android:name="com.HanyangHCI.crc_test.BackGroundCollecting"/>
</intent-filter>
</service>
<service android:name=".GPSTracker"
android:foregroundServiceType="location">
<intent-filter>
<action android:name="com.HanyangHCI.crc_test.GPSTracker"/>
</intent-filter>
</service>
<receiver android:name="com.HanyangHCI.crc_test.RestartService" android:process=":remote"/>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.hanyangHCI.crc_test.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
</application>
</manifest>
I'm trying to call my latitude & longitude data of the phone every 5 seconds.
This code worked well for Android 9 and 10, but it is not working for 11 and 12.
The initial location is updated but the following location is not updated at all.
FINE and COARSE location permissions are requested. What could be the problem?
if (!isGPSEnabled && !isNetworkEnabled) {
lat = 0;
lon = 0;
} else {
this.isGetLocation = true;
// GPS
if (isGPSEnabled) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0, this);
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location != null && location.getTime() > Calendar.getInstance().getTimeInMillis() - 5000) {
gpsUse = true;
}
if (location != null) {
lat = location.getLatitude();
lon = location.getLongitude();
}
}
}
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
0,
0, this);
if (locationManager != null) {
location4 = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location4 != null && location4.getTime() > Calendar.getInstance().getTimeInMillis() - 5000) {
networkUse = true;
}
if (location4 != null) {
lat = location4.getLatitude();
lon = location4.getLongitude();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
- I added the code of AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.HanyangHCI.crc_test">
<!-- <uses-permission android:name="android.permission.INTERNET"/>-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29" />
<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_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_SERVICE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_hci"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:requestLegacyExternalStorage="true"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name = ".Collecting"
android:screenOrientation="portrait" />
<service android:name=".Collecting"
android:foregroundServiceType="location"/>
<activity android:name=".Survay"
android:screenOrientation="portrait"/>
<activity android:name=".Survay2"
android:screenOrientation="portrait"/>
<activity android:name=".PopUp"
android:theme="@android:style/Theme.Dialog"
android:excludeFromRecents="true" />
<service android:name=".BackGroundCollecting"
android:enabled="true"
android:stopWithTask="false"
android:foregroundServiceType="location">
<intent-filter>
<action android:name="com.HanyangHCI.crc_test.BackGroundCollecting"/>
</intent-filter>
</service>
<service android:name=".GPSTracker"
android:foregroundServiceType="location">
<intent-filter>
<action android:name="com.HanyangHCI.crc_test.GPSTracker"/>
</intent-filter>
</service>
<receiver android:name="com.HanyangHCI.crc_test.RestartService" android:process=":remote"/>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.hanyangHCI.crc_test.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
</application>
</manifest>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许对你有帮助
https://developer.android.com/training/location/permissions
p/s : 上传一些AndroidManifest的图片
It's maybe helping you
https://developer.android.com/training/location/permissions
p/s: Upload some image of AndroidManifest