DirectionsActivity: Request contacts permission.

This commit is contained in:
Andreas Schildbach 2021-02-08 13:35:39 +01:00
parent 79a74cd485
commit 4390317bef

View file

@ -167,21 +167,25 @@ public class DirectionsActivity extends OeffiMainActivity implements ActivityCom
private static final int DIALOG_CLEAR_HISTORY = 1;
private static final int REQUEST_CODE_LOCATION_PERMISSION_FROM = 1;
private static final int REQUEST_CODE_LOCATION_PERMISSION_VIA = 2;
private static final int REQUEST_CODE_LOCATION_PERMISSION_TO = 3;
private static final int REQUEST_CODE_PICK_CONTACT_FROM = 4;
private static final int REQUEST_CODE_PICK_CONTACT_VIA = 5;
private static final int REQUEST_CODE_PICK_CONTACT_TO = 6;
private static final int REQUEST_CODE_PICK_STATION_FROM = 7;
private static final int REQUEST_CODE_PICK_STATION_VIA = 8;
private static final int REQUEST_CODE_PICK_STATION_TO = 9;
private static final int REQUEST_CODE_CONTACTS_PERMISSION_FROM = 1;
private static final int REQUEST_CODE_CONTACTS_PERMISSION_VIA = 2;
private static final int REQUEST_CODE_CONTACTS_PERMISSION_TO = 3;
private static final int REQUEST_CODE_LOCATION_PERMISSION_FROM = 4;
private static final int REQUEST_CODE_LOCATION_PERMISSION_VIA = 5;
private static final int REQUEST_CODE_LOCATION_PERMISSION_TO = 6;
private static final int REQUEST_CODE_PICK_CONTACT_FROM = 7;
private static final int REQUEST_CODE_PICK_CONTACT_VIA = 8;
private static final int REQUEST_CODE_PICK_CONTACT_TO = 9;
private static final int REQUEST_CODE_PICK_STATION_FROM = 10;
private static final int REQUEST_CODE_PICK_STATION_VIA = 11;
private static final int REQUEST_CODE_PICK_STATION_TO = 12;
private static final Logger log = LoggerFactory.getLogger(DirectionsActivity.class);
private static final String INTENT_EXTRA_FROM_LOCATION = DirectionsActivity.class.getName() + ".from_location";
private static final String INTENT_EXTRA_TO_LOCATION = DirectionsActivity.class.getName() + ".to_location";
private static final String INTENT_EXTRA_TIME_SPEC = DirectionsActivity.class.getName() + ".time_spec";
private static final Intent INTENT_PICK_CONTACTS = new Intent(Intent.ACTION_PICK, CommonDataKinds.StructuredPostal.CONTENT_URI);
public static void start(final Context context, @Nullable final Location fromLocation,
@Nullable final Location toLocation, @Nullable final TimeSpec timeSpec, final int intentFlags) {
@ -197,14 +201,16 @@ public class DirectionsActivity extends OeffiMainActivity implements ActivityCom
private class LocationContextMenuItemClickListener implements PopupMenu.OnMenuItemClickListener {
private final LocationView locationView;
private final int contactsPermissionRequestCode;
private final int locationPermissionRequestCode;
private final int pickContactRequestCode;
private final int pickStationRequestCode;
public LocationContextMenuItemClickListener(final LocationView locationView,
final int locationPermissionRequestCode, final int pickContactRequestCode,
final int pickStationRequestCode) {
final int contactsPermissionRequestCode, final int locationPermissionRequestCode,
final int pickContactRequestCode, final int pickStationRequestCode) {
this.locationView = locationView;
this.contactsPermissionRequestCode = contactsPermissionRequestCode;
this.locationPermissionRequestCode = locationPermissionRequestCode;
this.pickContactRequestCode = pickContactRequestCode;
this.pickStationRequestCode = pickStationRequestCode;
@ -220,8 +226,12 @@ public class DirectionsActivity extends OeffiMainActivity implements ActivityCom
new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, locationPermissionRequestCode);
return true;
} else if (item.getItemId() == R.id.directions_location_contact) {
startActivityForResult(new Intent(Intent.ACTION_PICK, CommonDataKinds.StructuredPostal.CONTENT_URI),
pickContactRequestCode);
if (ContextCompat.checkSelfPermission(DirectionsActivity.this,
Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED)
startActivityForResult(INTENT_PICK_CONTACTS, pickContactRequestCode);
else
ActivityCompat.requestPermissions(DirectionsActivity.this,
new String[] { Manifest.permission.READ_CONTACTS }, contactsPermissionRequestCode);
return true;
} else if (item.getItemId() == R.id.directions_location_favorite_station) {
if (network != null)
@ -308,13 +318,15 @@ public class DirectionsActivity extends OeffiMainActivity implements ActivityCom
viewFromLocation.setAdapter(autoCompleteAdapter);
viewFromLocation.setListener(locationChangeListener);
viewFromLocation.setContextMenuItemClickListener(new LocationContextMenuItemClickListener(viewFromLocation,
REQUEST_CODE_LOCATION_PERMISSION_FROM, REQUEST_CODE_PICK_CONTACT_FROM, REQUEST_CODE_PICK_STATION_FROM));
REQUEST_CODE_CONTACTS_PERMISSION_FROM, REQUEST_CODE_LOCATION_PERMISSION_FROM,
REQUEST_CODE_PICK_CONTACT_FROM, REQUEST_CODE_PICK_STATION_FROM));
viewViaLocation = findViewById(R.id.directions_via);
viewViaLocation.setAdapter(autoCompleteAdapter);
viewViaLocation.setListener(locationChangeListener);
viewViaLocation.setContextMenuItemClickListener(new LocationContextMenuItemClickListener(viewViaLocation,
REQUEST_CODE_LOCATION_PERMISSION_VIA, REQUEST_CODE_PICK_CONTACT_VIA, REQUEST_CODE_PICK_STATION_VIA));
REQUEST_CODE_CONTACTS_PERMISSION_VIA, REQUEST_CODE_LOCATION_PERMISSION_VIA,
REQUEST_CODE_PICK_CONTACT_VIA, REQUEST_CODE_PICK_STATION_VIA));
viewToLocation = findViewById(R.id.directions_to);
viewToLocation.setAdapter(autoCompleteAdapter);
@ -331,7 +343,8 @@ public class DirectionsActivity extends OeffiMainActivity implements ActivityCom
}
});
viewToLocation.setContextMenuItemClickListener(new LocationContextMenuItemClickListener(viewToLocation,
REQUEST_CODE_LOCATION_PERMISSION_TO, REQUEST_CODE_PICK_CONTACT_TO, REQUEST_CODE_PICK_STATION_TO));
REQUEST_CODE_CONTACTS_PERMISSION_TO, REQUEST_CODE_LOCATION_PERMISSION_TO,
REQUEST_CODE_PICK_CONTACT_TO, REQUEST_CODE_PICK_STATION_TO));
viewProducts = findViewById(R.id.directions_products);
viewProductToggles.add(findViewById(R.id.directions_products_i));
@ -1155,7 +1168,13 @@ public class DirectionsActivity extends OeffiMainActivity implements ActivityCom
@Override
public void onRequestPermissionsResult(final int requestCode, final String[] permissions,
final int[] grantResults) {
if (requestCode == REQUEST_CODE_LOCATION_PERMISSION_FROM)
if (requestCode == REQUEST_CODE_CONTACTS_PERMISSION_FROM)
startActivityForResult(INTENT_PICK_CONTACTS, REQUEST_CODE_PICK_CONTACT_FROM);
else if (requestCode == REQUEST_CODE_CONTACTS_PERMISSION_VIA)
startActivityForResult(INTENT_PICK_CONTACTS, REQUEST_CODE_PICK_CONTACT_VIA);
else if (requestCode == REQUEST_CODE_CONTACTS_PERMISSION_TO)
startActivityForResult(INTENT_PICK_CONTACTS, REQUEST_CODE_PICK_CONTACT_TO);
else if (requestCode == REQUEST_CODE_LOCATION_PERMISSION_FROM)
viewFromLocation.acquireLocation();
else if (requestCode == REQUEST_CODE_LOCATION_PERMISSION_VIA)
viewViaLocation.acquireLocation();