Skip to content

Commit

Permalink
geofence location permission code review
Browse files Browse the repository at this point in the history
  • Loading branch information
FatihUtkuKara committed Jul 21, 2024
1 parent 2a9ca7b commit 67a4026
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 84 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ public void onClick(View v) {
binding.inApp23.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Visilabs.CallAPI().requestLocationPermission(activity);
Visilabs.CallAPI().requestBackgroundLocationPermission(activity,"locationtitle","messageloc","titleback","titlemesage","ok","no");
}
});

Expand Down
29 changes: 9 additions & 20 deletions visilabs-android/src/main/java/com/visilabs/Visilabs.java
Original file line number Diff line number Diff line change
Expand Up @@ -2463,38 +2463,25 @@ public void setInAppButtonInterface(InAppButtonInterface inAppButtonInterface) {

public void requestLocationPermission(Activity activity){
Intent intent = new Intent(activity, PermissionActivity.class);
intent.putExtra("Background", "True");
intent.putExtra("Location", "True");
activity.startActivity(intent);
}

public void requestBackgroundLocationPermission(Activity activity){
Intent intent = new Intent(activity, PermissionActivity.class);
intent.putExtra("Background", "True");
activity.startActivity(intent);
}

public void requestBackgroundLocationPermission(Activity activity, String backgroundTitle , String backgroundMessage,String positiveButton,String negativeButton ){
public void requestLocationPermission(Activity activity, String locationTitle , String locationMessage,String positiveButton,String negativeButton){
Intent intent = new Intent(activity, PermissionActivity.class);
intent.putExtra("BackgroundMessage", backgroundMessage);
intent.putExtra("BackgroundTitle", backgroundTitle);
intent.putExtra("LocationTitle", locationTitle);
intent.putExtra("LocationMessage", locationMessage);
intent.putExtra("PositiveButton", positiveButton);
intent.putExtra("NegativeButton", negativeButton);
intent.putExtra("Background", "True");
activity.startActivity(intent);
}

public void requestLocationPermission(Activity activity, String locationTitle , String locationMessage,String positiveButton,String negativeButton){
public void requestBackgroundLocationPermission(Activity activity){
Intent intent = new Intent(activity, PermissionActivity.class);
intent.putExtra("LocationTitle", locationTitle);
intent.putExtra("LocationMessage", locationMessage);
intent.putExtra("PositiveButton", positiveButton);
intent.putExtra("NegativeButton", negativeButton);
intent.putExtra("Location", "True");
intent.putExtra("Background", "True");
activity.startActivity(intent);
}

public void requestLocationPermission(Activity activity, String locationTitle , String locationMessage , String backgroundTitle , String backgroundMessage ,String positiveButton,String negativeButton ){
public void requestBackgroundLocationPermission(Activity activity, String locationTitle , String locationMessage , String backgroundTitle , String backgroundMessage ,String positiveButton,String negativeButton ){
Intent intent = new Intent(activity, PermissionActivity.class);
intent.putExtra("LocationTitle", locationTitle);
intent.putExtra("LocationMessage", locationMessage);
Expand All @@ -2503,10 +2490,12 @@ public void requestLocationPermission(Activity activity, String locationTitle ,
intent.putExtra("PositiveButton", positiveButton);
intent.putExtra("NegativeButton", negativeButton);
intent.putExtra("Background", "True");
intent.putExtra("Location", "True");
activity.startActivity(intent);
}




public void sendLocationPermission() {
LocationPermission locationPermission = AppUtils.getLocationPermissionStatus(mContext);
String locationPermissionStr = "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import com.visilabs.Visilabs;
import com.visilabs.android.R;
import com.visilabs.model.LocationPermission;
Expand All @@ -20,92 +22,81 @@ public class PermissionActivity extends Activity {
private static final int LOCATION_PERMISSION_REQUEST_CODE = 20;
private static final int BACKGROUND_LOCATION_PERMISSION_REQUEST_CODE = 21;

private String locationTitle;
private String locationTitle;

private String locationMessage;
private String locationMessage;

private String backgroundTitle;
private String backgroundTitle;

private String backgroundMessage;
private String backgroundRequest;
private String locationRequest;
private String backgroundMessage;
private String backgroundRequest;

private String positiveButton;
private String negativeButton;
private Boolean permissionRequestPopUp = false ;
private Boolean isLocationPopUpValid = false;

private Boolean permissionBackgroundPopUp = false ;
private Boolean isBackgroundPopUpValid = false;


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Intent intent = getIntent();
if(intent != null) {
if (intent != null) {
backgroundRequest = intent.getStringExtra("Background");
locationRequest = intent.getStringExtra("Location");

backgroundMessage = intent.getStringExtra("BackgroundMessage");
backgroundTitle = intent.getStringExtra("BackgroundTitle");
locationMessage = intent.getStringExtra("LocationMessage");
locationTitle = intent.getStringExtra("LocationTitle");
positiveButton = intent.getStringExtra("PositiveButton");
negativeButton= intent.getStringExtra("NegativeButton");
negativeButton = intent.getStringExtra("NegativeButton");

permissionRequestPopUp = ( locationMessage != null || locationTitle != null);
permissionBackgroundPopUp = (backgroundMessage != null || backgroundTitle != null);
isLocationPopUpValid = (locationMessage != null || locationTitle != null);
isBackgroundPopUpValid = (backgroundMessage != null || backgroundTitle != null);

}



// Check if ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION permission has been already granted
boolean accessFineLocationPermission = ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
boolean accessCoarseLocationPermission = ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;

if (!(accessFineLocationPermission || accessCoarseLocationPermission)) {
if (locationRequest !=null) {
if (permissionRequestPopUp) {
showLocationPermission();
}
else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION},
LOCATION_PERMISSION_REQUEST_CODE
);
}

if (!(accessFineLocationPermission && accessCoarseLocationPermission)) {
if (isLocationPopUpValid) {
showLocationPermissionPopUp();
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION},
LOCATION_PERMISSION_REQUEST_CODE
);
}
if (backgroundRequest != null ){
if( permissionBackgroundPopUp) {
showBackgroundLocationPermission();
}
else {
// Check if the ACCESS_BACKGROUND_LOCATION has been already granted
LocationPermission locationPermission = AppUtils.getLocationPermissionStatus(this);
if(locationPermission != LocationPermission.ALWAYS) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
BACKGROUND_LOCATION_PERMISSION_REQUEST_CODE
);
}
} else {
finish();
} else if (backgroundRequest != null) {
if (isBackgroundPopUpValid) {
showBackgroundLocationPermissionPopUp();
} else {
// Check if the ACCESS_BACKGROUND_LOCATION has been already granted
LocationPermission locationPermission = AppUtils.getLocationPermissionStatus(this);
if (locationPermission != LocationPermission.ALWAYS) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
BACKGROUND_LOCATION_PERMISSION_REQUEST_CODE
);
}
} else {
finish();
}
}
}

}



private void showLocationPermission() {
private void showLocationPermissionPopUp() {
new AlertDialog.Builder(this, R.style.AlertDialogStyle)
.setTitle(locationTitle)
.setMessage(locationMessage)
Expand All @@ -125,10 +116,10 @@ public void onClick(DialogInterface dialog, int which) {
}
})
.show();
permissionRequestPopUp = false ;
isLocationPopUpValid = false;
}

private void showBackgroundLocationPermission() {
private void showBackgroundLocationPermissionPopUp() {
LocationPermission locationPermission = AppUtils.getLocationPermissionStatus(this);
if (locationPermission != LocationPermission.ALWAYS) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
Expand All @@ -140,7 +131,7 @@ private void showBackgroundLocationPermission() {
public void onClick(DialogInterface dialog, int which) {
// Check if the ACCESS_BACKGROUND_LOCATION has been already granted
LocationPermission locationPermission = AppUtils.getLocationPermissionStatus(PermissionActivity.this);
if(locationPermission != LocationPermission.ALWAYS) {
if (locationPermission != LocationPermission.ALWAYS) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
ActivityCompat.requestPermissions(PermissionActivity.this,
new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
Expand All @@ -163,34 +154,41 @@ public void onClick(DialogInterface dialog, int which) {
} else {
finish();
}
permissionBackgroundPopUp = false ;
isBackgroundPopUpValid = false;

}



@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
if((grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) ||
if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
if ((grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) ||
(grantResults.length > 1 && grantResults[1] == PackageManager.PERMISSION_GRANTED)) {

// Check if the ACCESS_BACKGROUND_LOCATION has been already granted
LocationPermission locationPermission = AppUtils.getLocationPermissionStatus(this);
if(locationPermission != LocationPermission.ALWAYS) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
BACKGROUND_LOCATION_PERMISSION_REQUEST_CODE
);
if (backgroundRequest != null) {
if (isBackgroundPopUpValid) {
showBackgroundLocationPermissionPopUp();
} else {
// Check if the ACCESS_BACKGROUND_LOCATION has been already granted
LocationPermission locationPermission = AppUtils.getLocationPermissionStatus(this);
if (locationPermission != LocationPermission.ALWAYS) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
BACKGROUND_LOCATION_PERMISSION_REQUEST_CODE
);
}
}
}
} else {
finish();

}
} else {
finish();
}
} else if (requestCode == BACKGROUND_LOCATION_PERMISSION_REQUEST_CODE) {
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
finish();
Visilabs.CallAPI().startGpsManager();
} else {
Expand Down

0 comments on commit 67a4026

Please sign in to comment.