todos: Ensure asking for bt permissions happens before initilization.
Change-Id: I0b1eba343ba5091a9e97ac28c0a503405b9198d8
diff --git a/app/src/main/java/io/v/todos/MainActivity.java b/app/src/main/java/io/v/todos/MainActivity.java
index 7dd040b..30ac61b 100644
--- a/app/src/main/java/io/v/todos/MainActivity.java
+++ b/app/src/main/java/io/v/todos/MainActivity.java
@@ -46,6 +46,8 @@
private static final int BLE_LOCATION_PERMISSIONS_REQUEST_CODE = 1;
+ private PersistenceInitializer<MainPersistence> mPersistenceInitializer;
+
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -74,7 +76,7 @@
}
}).attachToRecyclerView(mRecyclerView);
- new PersistenceInitializer<MainPersistence>(this) {
+ mPersistenceInitializer = new PersistenceInitializer<MainPersistence>(this) {
@Override
protected MainPersistence initPersistence() throws Exception {
return PersistenceFactory.getMainPersistence(mActivity, savedInstanceState,
@@ -83,11 +85,14 @@
@Override
protected void onSuccess(MainPersistence persistence) {
- requestLocationPermissions();
mPersistence = persistence;
setEmptyVisiblity();
}
- }.execute(PersistenceFactory.mightGetMainPersistenceBlock());
+ };
+
+ // mPersistenceInitializer.execute is invoked once we request location permissions from the
+ // app user.
+ requestLocationPermissions();
}
// Creates a listener for this activity. Visible to tests to allow them to invoke the listener
@@ -194,6 +199,8 @@
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
BLE_LOCATION_PERMISSIONS_REQUEST_CODE);
+ } else {
+ mPersistenceInitializer.execute(PersistenceFactory.mightGetMainPersistenceBlock());
}
}
@@ -202,13 +209,7 @@
String permissions[], int[] grantResults) {
switch (requestCode) {
case BLE_LOCATION_PERMISSIONS_REQUEST_CODE: {
- if (grantResults.length > 0
- && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- // Permission was granted;
- } else {
- // Permission was denied;
- // TODO(suharshs): We should avoid doing BLE scanning in this case?
- }
+ mPersistenceInitializer.execute(PersistenceFactory.mightGetMainPersistenceBlock());
return;
}
}