Skip to content

Conversation

skywalkerDavid
Copy link

Descriptions:

Supply the permission callbacks.

  1. Supply the denied and neverAskAgain callback
  2. Supply onCheckLocationPermissionResult, since onRequestPermissionsResult in NativeGoogleMapFragment and WebviewMapFragment won't be called when requestPermissions.

Test:

Tested with Sample app

Reviewers:

@felipecsl @gpeal @nwadams

@felipecsl
Copy link
Contributor

Is this the fix for #112?

@@ -0,0 +1,7 @@
package com.airbnb.android.airmapview.listeners;

public interface OnLocationPermissionListener {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you please add javadocs to this interface?

static void onRequestPermissionsResult(AirMapInterface airMapInterface, int requestCode,
int[] grantResults) {
public static void onRequestPermissionsResult(Activity activity, AirMapInterface airMapInterface, int requestCode,
String[] permissions, int[] grantResults) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

revert formatting change?

* Utility class that handles runtime permissions
*/
final class RuntimePermissionUtils {
public final class RuntimePermissionUtils {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this need to be public?

}
}

return true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should use 2-space indentation instead

return false;
}

final Set<String> requestPermissions = new HashSet<>(Arrays.asList(LOCATION_PERMISSIONS));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can use Collections.singleton() instead

@skywalkerDavid
Copy link
Author

@felipecsl yes, it fixes the #112 and 1 other issue about permission: setMyLocationEnabled won't work immediately even after the permission is accepted.

Thank you for the comments, they are all very good, I will address them soon.

@skywalkerDavid
Copy link
Author

Comments addressed.

@skywalkerDavid
Copy link
Author

@felipecsl PTAL, thank you

Copy link
Contributor

@felipecsl felipecsl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks almost ready, just a couple of nits

if (permissions.length != LOCATION_PERMISSIONS.length) {
return false;
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's not clear to me why you're creating this set with a single item inside?
can you just check if permission.equals(LOCATION_PERMISSIONS) on line 55?

} else if (!shouldShowRequestPermissionRationale(activity, LOCATION_PERMISSIONS)) {
airMapInterface.onLocationPermissionsNeverAskAgain();
} else {
airMapInterface.onLocationPermissionsDenied();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indentation is still 4 spaces here


@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
@NonNull int[] grantResults) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

formatting

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants