I am using Bluetooth which wants location permission when it going to use Bluetooth, In android 10 or you can say Android Q launched and it set some priorities and permissions, So I want to enable location programmatically without leaving my App screen.
How I do this please share source code if possible?
- 3 years ago
You can use the below-mentioned class which will help you to achieve your enable GPS location.
To use this class you need to call in your function or class
new GpsLocationUtils(mActivity).turnGPSOn(isGPSEnable -> { // turn on GPS isGPS = isGPSEnable; } } });
GpsLocationUtils.java
package com.app.adapter; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.IntentSender; import android.location.LocationManager; import android.util.Log; import android.widget.Toast; import androidx.annotation.NonNull; import com.app.util.ConfigConstants; import com.google.android.gms.common.api.ApiException; import com.google.android.gms.common.api.ResolvableApiException; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; import com.google.android.gms.location.LocationSettingsRequest; import com.google.android.gms.location.LocationSettingsResponse; import com.google.android.gms.location.LocationSettingsStatusCodes; import com.google.android.gms.location.SettingsClient; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import static android.content.ContentValues.TAG; public class GpsLocationUtils { private Context context; private SettingsClient mSettingsClient; private LocationSettingsRequest mLocationSettingsRequest; private LocationManager locationManager; private LocationRequest locationRequest; public GpsLocationUtils(Context context) { this.context = context; locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); mSettingsClient = LocationServices.getSettingsClient(context); locationRequest = LocationRequest.create(); locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); locationRequest.setInterval(10 * 1000); locationRequest.setFastestInterval(2 * 1000); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(locationRequest); mLocationSettingsRequest = builder.build();//************************** builder.setAlwaysShow(true); //this is the key ingredient //************************** }// method for turn on GPS public void turnGPSOn(onGpsListener onGpsListener) { if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { if (onGpsListener != null) { onGpsListener.gpsStatus(true); } } else { mSettingsClient .checkLocationSettings(mLocationSettingsRequest) .addOnSuccessListener((Activity) context, new OnSuccessListener<LocationSettingsResponse>() { @SuppressLint("MissingPermission") @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) {// GPS is already enable, callback GPS status through listener if (onGpsListener != null) { onGpsListener.gpsStatus(true); } } }) .addOnFailureListener((Activity) context, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { int statusCode = ((ApiException) e).getStatusCode(); switch (statusCode) { case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: try { // Show the dialog by calling startResolutionForResult(), and check the // result in onActivityResult(). ResolvableApiException rae = (ResolvableApiException) e; rae.startResolutionForResult((Activity) context, ConfigConstants.GPS_REQUEST); } catch (IntentSender.SendIntentException sie) { Log.i(TAG, "PendingIntent unable to execute request."); } break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: String errorMessage = "Location settings are inadequate, and cannot be " + "fixed here. Fix in Settings."; Log.e(TAG, errorMessage); Toast.makeText((Activity) context, errorMessage, Toast.LENGTH_LONG).show(); } } }); } } public interface onGpsListener { void gpsStatus(boolean isGPSEnable); } }
Hot Questions