Reputation: 71
I am Using google maps code in my project..i have also added permission in manifest file but there is also error in my code that say to add permission ..so i searched from net and found that add permission dynamically..so i add follwing code..
if ( Build.VERSION.SDK_INT >= 23 &&
ContextCompat.checkSelfPermission( context, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return ;
}
so now error is cannot resolve symbol context..i am using sdk 23..please help me
Upvotes: 1
Views: 920
Reputation: 11464
Please ask for permission as below :
try {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int hasReadContactPermission = checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);
if (hasReadContactPermission != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
101);
}
}
} catch (Exception e) {
e.printStackTrace();
}
Add below declarion also :
final private int REQUEST_CODE_ASK_PERMISSIONS = 124;
Thanks.!!
Upvotes: 1
Reputation: 2737
private void checkPermissionForGettingLocation() {
final int fineLocationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
final int coarseLocationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);
final int callPhonePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);
if (fineLocationPermission == PackageManager.PERMISSION_GRANTED && coarseLocationPermission == PackageManager.PERMISSION_GRANTED && callPhonePermission == PackageManager.PERMISSION_GRANTED) {
// getLocationAndSaveInDatabaseOrEnableGPS();
showGpsDialogAndGetLocation();
} else {
boolean requestPermissionRationale = ActivityCompat.shouldShowRequestPermissionRationale(LoginActivity.this, Manifest.permission.ACCESS_FINE_LOCATION);
if (requestPermissionRationale) {
Snackbar snackbar = Snackbar.make(mRootCL, "Please provide location permission for app to work correctly. ", Snackbar.LENGTH_INDEFINITE)
.setAction("Settings", new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", LoginActivity.this.getPackageName(), null);
intent.setData(uri);
LoginActivity.this.startActivity(intent);
}
});
snackbar.setActionTextColor(LoginActivity.this.getResources().getColor(R.color.button_green_color));
View sbView = snackbar.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(LoginActivity.this.getResources().getColor(R.color.white));
snackbar.show();
//Toast.makeText(LoginActivity.this, "Location permission are required to get location.", Toast.LENGTH_SHORT).show();
} else {
ActivityCompat.requestPermissions(LoginActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.CALL_PHONE}, LOCATION_PERMISSION_REQUEST_CODE);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case LOCATION_PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// getLocationAndSaveInDatabaseOrEnableGPS();
showGpsDialogAndGetLocation();
}
break;
}
}
Upvotes: 1