1

I do not know what I am doing wrong.

AndroidManifest.xml

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
 if (!checkAndRequestPermissions()) {
 return;
    }
}

public boolean checkAndRequestPermissions() {
 int internet = ContextCompat.checkSelfPermission(this,
            Manifest.permission.INTERNET);
 int loc = ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_COARSE_LOCATION);
 int loc2 = ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_FINE_LOCATION);
    List<String> listPermissionsNeeded = new ArrayList<>();

if (internet != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.INTERNET);
    }
 if (loc != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.ACCESS_COARSE_LOCATION);
    }
 if (loc2 != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
    }
 if (!listPermissionsNeeded.isEmpty()) {
        ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray
                (new String[0]), 1);
 return false;
    }
 return true;
}
public boolean checkAndRequestPermissions() {
 int internet = ContextCompat.checkSelfPermission(this,
            Manifest.permission.INTERNET);
 int loc = ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_COARSE_LOCATION);
 int loc2 = ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_FINE_LOCATION);
    List<String> listPermissionsNeeded = new ArrayList<>();

if (internet != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.INTERNET);
    }
 if (loc != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.ACCESS_COARSE_LOCATION);
    }
 if (loc2 != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
    }
 if (!listPermissionsNeeded.isEmpty()) {
        ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray
                (new String[0]), 1);
 return false;
    }
 return true;
}

However, I get a warning that I haven't declared the permissions (code from a separate java file that I call inside MainActivity.java):

LocationRequest mLocationRequest = LocationRequest.create();
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationCallback mLocationCallback = new LocationCallback() {
 @Override
 public void onLocationResult(@NonNull LocationResult locationResult) {
 for (Location location : locationResult.getLocations()) {
 if (location != null) {
 currentLocation = location;
            }
        }
    }
};

fusedLocationClient = LocationServices.getFusedLocationProviderClient(context);
fusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback,
        Looper.getMainLooper());

Am I missing something? I get the red squiggly line here:

fusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback,
        Looper.getMainLooper());

I am using Android Studio Arctic Fox

a_local_nobody
  • 7,947
  • 5
  • 29
  • 51
  • What is the actual message that shows on the line with the red line – tyczj Sep 29 '21 at 20:11
  • You should not need coarse when you request fine. Correct me if i am wrong. Did you try requestMultiplePermissions()? – John Doe Sep 29 '21 at 20:23
  • Try the solution suggested by Mahmoud: [SO: android-missing permissions(location)](https://stackoverflow.com/questions/56913725/missing-permissions-required-by-locationmanager). – Alias Cartellano Sep 29 '21 at 21:11
  • The message: Missing permissions required by FusedLocationProviderClient.requestLocationUpdates: android.permission.ACCESS_COARSE_LOCATION or android.permission.ACCESS_FINE_LOCATION @JohnDoe what do you mean by requestMultiplePermissions() –  Sep 29 '21 at 21:29
  • Can you share the exact message what error shows – Nitish Sep 30 '21 at 05:11

0 Answers0