Handle permission requests from fragments

pull/384/head
Alex Baker 9 years ago
parent 7fd5611264
commit 580337559e

@ -82,6 +82,7 @@ dependencies {
compile 'com.nononsenseapps:filepicker:2.5.0'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:support-v13:23.1.1'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.jakewharton.timber:timber:4.1.0'
compile 'com.google.guava:guava-jdk5:17.0'

@ -17,6 +17,7 @@ import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import org.tasks.R;
import org.tasks.activities.ClearGtaskDataActivity;
import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.preferences.ActivityPermissionRequestor;
import org.tasks.preferences.PermissionRequestor;
import org.tasks.scheduling.BackgroundScheduler;
@ -29,7 +30,7 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
@Inject GtasksPreferenceService gtasksPreferenceService;
@Inject BackgroundScheduler backgroundScheduler;
@Inject PermissionRequestor permissionRequestor;
@Inject ActivityPermissionRequestor permissionRequestor;
@Override
public void onCreate(Bundle savedInstanceState) {

@ -16,6 +16,7 @@ import com.todoroo.astrid.gcal.GCalHelper;
import org.tasks.R;
import org.tasks.activities.CalendarSelectionActivity;
import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.preferences.ActivityPermissionRequestor;
import org.tasks.preferences.PermissionChecker;
import org.tasks.preferences.PermissionRequestor;
import org.tasks.preferences.Preferences;
@ -37,7 +38,7 @@ public class DefaultsPreferences extends InjectingPreferenceActivity {
@Inject Preferences preferences;
@Inject GCalHelper calendarHelper;
@Inject PermissionChecker permissionChecker;
@Inject PermissionRequestor permissionRequester;
@Inject ActivityPermissionRequestor permissionRequester;
private Preference defaultCalendarPref;
@Override

@ -15,6 +15,7 @@ import com.todoroo.astrid.voice.AACRecorder.AACRecorderCallbacks;
import org.tasks.R;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.ActivityPermissionRequestor;
import org.tasks.preferences.PermissionRequestor;
import org.tasks.preferences.Preferences;
@ -35,7 +36,7 @@ public class AACRecordingActivity extends InjectingAppCompatActivity implements
private String tempFile;
@Inject Preferences preferences;
@Inject PermissionRequestor permissionRequestor;
@Inject ActivityPermissionRequestor permissionRequestor;
@Bind(R.id.timer) Chronometer timer;

@ -18,6 +18,7 @@ import android.preference.PreferenceManager;
import org.tasks.R;
import org.tasks.activities.TimePickerActivity;
import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.preferences.ActivityPermissionRequestor;
import org.tasks.preferences.Device;
import org.tasks.preferences.PermissionChecker;
import org.tasks.preferences.PermissionRequestor;
@ -38,7 +39,7 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
private static final int REQUEST_DEFAULT_REMIND = 10003;
@Inject Device device;
@Inject PermissionRequestor permissionRequestor;
@Inject ActivityPermissionRequestor permissionRequestor;
@Inject PermissionChecker permissionChecker;
private CheckBoxPreference fieldMissedCalls;

@ -8,6 +8,7 @@ package com.todoroo.astrid.ui;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.Nullable;
@ -36,6 +37,7 @@ import org.tasks.location.Geofence;
import org.tasks.location.GeofenceService;
import org.tasks.location.PlacePicker;
import org.tasks.preferences.Device;
import org.tasks.preferences.FragmentPermissionRequestor;
import org.tasks.preferences.PermissionRequestor;
import org.tasks.preferences.Preferences;
import org.tasks.ui.HiddenTopArrayAdapter;
@ -79,7 +81,7 @@ public class ReminderControlSet extends TaskEditControlFragment {
@Inject AlarmService alarmService;
@Inject GeofenceService geofenceService;
@Inject PermissionRequestor permissionRequestor;
@Inject FragmentPermissionRequestor permissionRequestor;
@Inject Device device;
@Inject Preferences preferences;
@Inject @ForActivity Context context;
@ -269,6 +271,17 @@ public class ReminderControlSet extends TaskEditControlFragment {
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == PermissionRequestor.REQUEST_LOCATION) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
pickLocation();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
public void addAlarmRow(final Long timestamp) {
addAlarmRow(getLongDateStringWithTime(context, timestamp), new OnClickListener() {
@Override

@ -8,6 +8,7 @@ import android.os.Bundle;
import com.todoroo.astrid.gcal.AndroidCalendar;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.ActivityPermissionRequestor;
import org.tasks.preferences.ActivityPreferences;
import org.tasks.preferences.PermissionRequestor;
@ -21,7 +22,7 @@ public class CalendarSelectionActivity extends InjectingAppCompatActivity implem
public static final String EXTRA_CALENDAR_NAME = "extra_calendar_name";
public static final String EXTRA_SHOW_NONE = "extra_show_none";
@Inject PermissionRequestor permissionRequestor;
@Inject ActivityPermissionRequestor permissionRequestor;
@Inject ActivityPreferences preferences;
@Override

@ -11,6 +11,7 @@ import com.google.common.base.Strings;
import com.nononsenseapps.filepicker.FilePickerActivity;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.ActivityPermissionRequestor;
import org.tasks.preferences.PermissionRequestor;
import java.io.File;
@ -26,7 +27,7 @@ public class FileExplore extends InjectingAppCompatActivity {
public static final String EXTRA_START_PATH = "extra_start_path";
public static final String EXTRA_DIRECTORY_MODE = "extra_directory_mode"; //$NON-NLS-1$
@Inject PermissionRequestor permissionRequestor;
@Inject ActivityPermissionRequestor permissionRequestor;
private boolean directoryMode;
private String startPath;

@ -0,0 +1,22 @@
package org.tasks.preferences;
import android.app.Activity;
import android.support.v4.app.ActivityCompat;
import javax.inject.Inject;
public class ActivityPermissionRequestor extends PermissionRequestor {
private final Activity activity;
@Inject
public ActivityPermissionRequestor(Activity activity, PermissionChecker permissionChecker) {
super(permissionChecker);
this.activity = activity;
}
protected void requestPermissions(String[] permissions, int rc) {
ActivityCompat.requestPermissions(activity, permissions, rc);
}
}

@ -0,0 +1,22 @@
package org.tasks.preferences;
import android.app.Fragment;
import android.support.v13.app.FragmentCompat;
import javax.inject.Inject;
public class FragmentPermissionRequestor extends PermissionRequestor {
private Fragment fragment;
@Inject
public FragmentPermissionRequestor(Fragment fragment, PermissionChecker permissionChecker) {
super(permissionChecker);
this.fragment = fragment;
}
@Override
protected void requestPermissions(String[] permissions, int rc) {
FragmentCompat.requestPermissions(fragment, permissions, rc);
}
}

@ -27,7 +27,7 @@ public class MiscellaneousPreferences extends InjectingPreferenceActivity {
@Inject Preferences preferences;
@Inject VoiceOutputAssistant voiceOutputAssistant;
@Inject PermissionRequestor permissionRequestor;
@Inject ActivityPermissionRequestor permissionRequestor;
@Inject PermissionChecker permissionChecker;
@Inject BackgroundScheduler backgroundScheduler;

@ -1,13 +1,8 @@
package org.tasks.preferences;
import android.Manifest;
import android.app.Activity;
import android.support.v4.app.ActivityCompat;
import javax.inject.Inject;
public class PermissionRequestor {
public abstract class PermissionRequestor {
public static final int REQUEST_FILE_WRITE = 50;
public static final int REQUEST_CALENDAR = 51;
public static final int REQUEST_MIC = 52;
@ -15,12 +10,9 @@ public class PermissionRequestor {
public static final int REQUEST_LOCATION = 54;
public static final int REQUEST_CONTACTS = 55;
private final Activity activity;
private final PermissionChecker permissionChecker;
@Inject
public PermissionRequestor(Activity activity, PermissionChecker permissionChecker) {
this.activity = activity;
public PermissionRequestor(PermissionChecker permissionChecker) {
this.permissionChecker = permissionChecker;
}
@ -78,7 +70,5 @@ public class PermissionRequestor {
requestPermissions(new String[] {permission}, rc);
}
private void requestPermissions(String[] permissions, int rc) {
ActivityCompat.requestPermissions(activity, permissions, rc);
}
protected abstract void requestPermissions(String[] permissions, int requestCode);
}

Loading…
Cancel
Save