requestLocationUpdates is not working on Android 11 & 12

Viewed 408

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>
1 Answers
Related