From e6383e20a6e7cc4f73ed73309e580058bc79d4f7 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:13:14 +1000 Subject: [PATCH 01/25] Add checkLocationPermission() in NearbyActivity --- .../free/nrw/commons/nearby/NearbyActivity.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 1060cf25e..8a65cacd9 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -1,14 +1,18 @@ package fr.free.nrw.commons.nearby; +import android.Manifest; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.PackageManager; import android.location.LocationManager; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.view.Menu; import android.view.MenuInflater; @@ -89,6 +93,17 @@ public class NearbyActivity extends NavigationBaseActivity { } } + protected void checkLocationPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + //Carry on + } else { + //Ask permission + } + } + + } + protected void checkGps() { LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE); if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { From 3ec93115e2200ebbb53d8ca3668d4827e24273ce Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:25:04 +1000 Subject: [PATCH 02/25] Add permission request for ACCESS_FINE_LOCATION --- .../fr/free/nrw/commons/nearby/NearbyActivity.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 8a65cacd9..69f0165fb 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -10,6 +10,7 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; @@ -93,15 +94,14 @@ public class NearbyActivity extends NavigationBaseActivity { } } - protected void checkLocationPermission() { + private void checkLocationPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { - //Carry on - } else { - //Ask permission + if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + //Request permission and display notification that Nearby places cannot be shown without permission + ActivityCompat.requestPermissions(this, + new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1); } } - } protected void checkGps() { From 40a2e03b9c8dc86b3b111e0cc4fa25608d4e6697 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:25:44 +1000 Subject: [PATCH 03/25] Add checkLocationPermission() call to onCreate() --- app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 69f0165fb..7a6bae8d5 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -58,6 +58,7 @@ public class NearbyActivity extends NavigationBaseActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } + checkLocationPermission(); bundle = new Bundle(); locationManager = new LocationServiceManager(this); locationManager.registerLocationManager(); From 3bd1baaf8ddca855e3759e6f8eac3771bf92f9ce Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:30:19 +1000 Subject: [PATCH 04/25] Add constant for request code --- .../main/java/fr/free/nrw/commons/nearby/NearbyActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 7a6bae8d5..3aa6ae4c8 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -43,6 +43,7 @@ public class NearbyActivity extends NavigationBaseActivity { @BindView(R.id.progressBar) ProgressBar progressBar; private boolean isMapViewActive = false; + private static final int LOCATION_REQUEST = 1; private LocationServiceManager locationManager; private LatLng curLatLang; @@ -100,7 +101,7 @@ public class NearbyActivity extends NavigationBaseActivity { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { //Request permission and display notification that Nearby places cannot be shown without permission ActivityCompat.requestPermissions(this, - new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1); + new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST); } } } From 361196beddd66935540bc745d9929ca4a3ba8db8 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:36:25 +1000 Subject: [PATCH 05/25] Add onRequestPermissionsResult() --- .../free/nrw/commons/nearby/NearbyActivity.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 3aa6ae4c8..7bff04bf0 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -99,13 +99,27 @@ public class NearbyActivity extends NavigationBaseActivity { private void checkLocationPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - //Request permission and display notification that Nearby places cannot be shown without permission ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST); } } } + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + switch (requestCode) { + case LOCATION_REQUEST: { + if (grantResults.length > 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) { + //If permission not granted, display notification that Nearby Places cannot be displayed + int duration = Toast.LENGTH_LONG; + Toast toast = Toast.makeText(this, "Nearby places cannot be found without location permissions", duration); + toast.show(); + } + } + } + } + + protected void checkGps() { LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE); if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { From 50ecf4fd15105f6311117756536c3d62dd02843b Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:38:08 +1000 Subject: [PATCH 06/25] Fix logical error --- .../main/java/fr/free/nrw/commons/nearby/NearbyActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 7bff04bf0..28c6f2a23 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -109,7 +109,9 @@ public class NearbyActivity extends NavigationBaseActivity { public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case LOCATION_REQUEST: { - if (grantResults.length > 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + refreshView(); + } else { //If permission not granted, display notification that Nearby Places cannot be displayed int duration = Toast.LENGTH_LONG; Toast toast = Toast.makeText(this, "Nearby places cannot be found without location permissions", duration); From a704f5a7405fe2b4fbbc799df51392bf2d30fb69 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:43:51 +1000 Subject: [PATCH 07/25] Register locationManager if permission granted --- .../java/fr/free/nrw/commons/nearby/NearbyActivity.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 28c6f2a23..9bcdb0fba 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -99,8 +99,7 @@ public class NearbyActivity extends NavigationBaseActivity { private void checkLocationPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, - new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST); + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST); } } } @@ -110,7 +109,11 @@ public class NearbyActivity extends NavigationBaseActivity { switch (requestCode) { case LOCATION_REQUEST: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - refreshView(); + locationManager = new LocationServiceManager(this); + locationManager.registerLocationManager(); + curLatLang = locationManager.getLatestLocation(); + nearbyAsyncTask = new NearbyAsyncTask(this); + nearbyAsyncTask.execute(); } else { //If permission not granted, display notification that Nearby Places cannot be displayed int duration = Toast.LENGTH_LONG; From 93acd40926623b092d4bbe74e6af73e738565f14 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:47:09 +1000 Subject: [PATCH 08/25] Move code into startLookingForNearby() --- .../nrw/commons/nearby/NearbyActivity.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 9bcdb0fba..fcc882f11 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -61,11 +61,6 @@ public class NearbyActivity extends NavigationBaseActivity { checkLocationPermission(); bundle = new Bundle(); - locationManager = new LocationServiceManager(this); - locationManager.registerLocationManager(); - curLatLang = locationManager.getLatestLocation(); - nearbyAsyncTask = new NearbyAsyncTask(this); - nearbyAsyncTask.execute(); initDrawer(); } @@ -96,11 +91,23 @@ public class NearbyActivity extends NavigationBaseActivity { } } + private void startLookingForNearby() { + locationManager = new LocationServiceManager(this); + locationManager.registerLocationManager(); + curLatLang = locationManager.getLatestLocation(); + nearbyAsyncTask = new NearbyAsyncTask(this); + nearbyAsyncTask.execute(); + } + private void checkLocationPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + startLookingForNearby(); + } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST); } + } else { + startLookingForNearby(); } } @@ -109,11 +116,7 @@ public class NearbyActivity extends NavigationBaseActivity { switch (requestCode) { case LOCATION_REQUEST: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - locationManager = new LocationServiceManager(this); - locationManager.registerLocationManager(); - curLatLang = locationManager.getLatestLocation(); - nearbyAsyncTask = new NearbyAsyncTask(this); - nearbyAsyncTask.execute(); + startLookingForNearby(); } else { //If permission not granted, display notification that Nearby Places cannot be displayed int duration = Toast.LENGTH_LONG; From ec6ba8cf87061edb43dffbb931cda728c3f94d96 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:49:19 +1000 Subject: [PATCH 09/25] Remove hardcoded string --- .../main/java/fr/free/nrw/commons/nearby/NearbyActivity.java | 3 +-- app/src/main/res/values/strings.xml | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index fcc882f11..1fe5cbb41 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -120,14 +120,13 @@ public class NearbyActivity extends NavigationBaseActivity { } else { //If permission not granted, display notification that Nearby Places cannot be displayed int duration = Toast.LENGTH_LONG; - Toast toast = Toast.makeText(this, "Nearby places cannot be found without location permissions", duration); + Toast toast = Toast.makeText(this, R.string.no_location_permission, duration); toast.show(); } } } } - protected void checkGps() { LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE); if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1a3e780f2..8d0a53b63 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -194,6 +194,7 @@ Tap this message (or hit back) to skip this step. Logout Tutorial + Nearby places cannot be found without location permissions no description found Commons Article WikiData Article From cab0d2469280ad165aed3c8735b43d1ae75dafe2 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:50:45 +1000 Subject: [PATCH 10/25] Add null check to onPause asynctask --- .../main/java/fr/free/nrw/commons/nearby/NearbyActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 1fe5cbb41..d2e5ee22d 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -189,7 +189,9 @@ public class NearbyActivity extends NavigationBaseActivity { @Override protected void onPause() { super.onPause(); - nearbyAsyncTask.cancel(true); + if (nearbyAsyncTask != null) { + nearbyAsyncTask.cancel(true); + } } protected void refreshView() { From e6e141e51d4f56929f5e7d5d572397a68679bda6 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 31 May 2017 19:53:23 +1000 Subject: [PATCH 11/25] Fix whitespace --- .../java/fr/free/nrw/commons/nearby/NearbyActivity.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index d2e5ee22d..5ca0d0f33 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -58,7 +58,6 @@ public class NearbyActivity extends NavigationBaseActivity { if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } - checkLocationPermission(); bundle = new Bundle(); initDrawer(); @@ -101,10 +100,12 @@ public class NearbyActivity extends NavigationBaseActivity { private void checkLocationPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + if (ContextCompat.checkSelfPermission(this, + Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { startLookingForNearby(); } else { - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST); + ActivityCompat.requestPermissions(this, + new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST); } } else { startLookingForNearby(); From 9895093b8f744cdd6a76f2155e91e438393db636 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 1 Jun 2017 22:15:17 +1000 Subject: [PATCH 12/25] Add @NonNull annotations --- .../main/java/fr/free/nrw/commons/nearby/NearbyActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 5ca0d0f33..af5a2b809 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -10,6 +10,7 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; @@ -113,7 +114,7 @@ public class NearbyActivity extends NavigationBaseActivity { } @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case LOCATION_REQUEST: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { From 2e72b29fba2e51eba0bd3884f3c620df670f6718 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 01:25:17 +1000 Subject: [PATCH 13/25] Add TODO and fragment transaction --- .../fr/free/nrw/commons/nearby/NearbyActivity.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index af5a2b809..f2af322a0 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -121,9 +121,17 @@ public class NearbyActivity extends NavigationBaseActivity { startLookingForNearby(); } else { //If permission not granted, display notification that Nearby Places cannot be displayed + /** int duration = Toast.LENGTH_LONG; Toast toast = Toast.makeText(this, R.string.no_location_permission, duration); - toast.show(); + toast.show();*/ + + //TODO: Open a fragment saying permissions not granted instead + FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); + Fragment fragment = new NoPermissionsFragment(); + fragment.setArguments(bundle); + fragmentTransaction.replace(R.id.container, fragment); + fragmentTransaction.commit(); } } } From 18bb59403b327df7391d87fcf77c81863b9152d4 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 01:30:13 +1000 Subject: [PATCH 14/25] Add NoPermissionsFragment --- app/build.gradle | 32 ++++++++++--------- .../commons/nearby/NoPermissionsFragment.java | 30 +++++++++++++++++ .../res/layout/fragment_no_permissions.xml | 13 ++++++++ app/src/main/res/values/strings.xml | 3 ++ 4 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java create mode 100644 app/src/main/res/layout/fragment_no_permissions.xml diff --git a/app/build.gradle b/app/build.gradle index b3f898183..a474fd403 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,6 +3,18 @@ apply plugin: 'jacoco-android' apply from: 'quality.gradle' dependencies { + compile "com.android.support:support-v4:${project.supportLibVersion}" + compile "com.android.support:appcompat-v7:${project.supportLibVersion}" + compile "com.android.support:design:${project.supportLibVersion}" + compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION" + annotationProcessor "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION" + compile('com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.2@aar') { + transitive = true + } + compile "com.google.guava:guava:${GUAVA_VERSION}" + + androidTestCompile "com.android.support:support-annotations:${project.supportLibVersion}" + compile 'com.github.nicolas-raoul:Quadtree:ac16ea8035bf07' compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' compile 'in.yuvi:http.fluent:1.3' @@ -10,27 +22,16 @@ dependencies { compile 'ch.acra:acra:4.7.0' compile 'org.mediawiki:api:1.3' compile 'commons-codec:commons-codec:1.10' - compile "com.android.support:support-v4:${project.supportLibVersion}" - compile "com.android.support:appcompat-v7:${project.supportLibVersion}" - compile "com.android.support:design:${project.supportLibVersion}" compile 'com.google.code.gson:gson:2.7' - compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION" - annotationProcessor "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION" compile 'com.jakewharton.timber:timber:4.5.1' - compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.2@aar'){ - transitive=true - } compile 'com.facebook.fresco:fresco:1.3.0' compile 'com.facebook.stetho:stetho:1.5.0' - compile "com.google.guava:guava:${GUAVA_VERSION}" - + compile 'com.android.support:support-v4:25.3.1' testCompile 'junit:junit:4.12' - androidTestCompile "com.android.support:support-annotations:${project.supportLibVersion}" + testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' - debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' - testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' } android { @@ -51,11 +52,12 @@ android { buildTypes { release { - minifyEnabled false // See https://stackoverflow.com/questions/40232404/google-play-apk-and-android-studio-apk-usb-debug-behaving-differently - proguard.cfg modification alone insufficient. + minifyEnabled false + // See https://stackoverflow.com/questions/40232404/google-play-apk-and-android-studio-apk-usb-debug-behaving-differently - proguard.cfg modification alone insufficient. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } debug { - testCoverageEnabled true + testCoverageEnabled true } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java new file mode 100644 index 000000000..cd622d522 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java @@ -0,0 +1,30 @@ +package fr.free.nrw.commons.nearby; + + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import fr.free.nrw.commons.R; + +/** + * A simple {@link Fragment} subclass. + */ +public class NoPermissionsFragment extends Fragment { + + + public NoPermissionsFragment() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_no_permissions, container, false); + } + +} diff --git a/app/src/main/res/layout/fragment_no_permissions.xml b/app/src/main/res/layout/fragment_no_permissions.xml new file mode 100644 index 000000000..320b0e14d --- /dev/null +++ b/app/src/main/res/layout/fragment_no_permissions.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8d0a53b63..b98314cc0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -198,4 +198,7 @@ Tap this message (or hit back) to skip this step. no description found Commons Article WikiData Article + + + Hello blank fragment From 8626bc259fd724d9df73edc22f6329319e2707a7 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 17:50:43 +1000 Subject: [PATCH 15/25] Gradle modifications to fix build error --- app/build.gradle | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a474fd403..1be98b1f7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,7 +29,9 @@ dependencies { compile 'com.android.support:support-v4:25.3.1' testCompile 'junit:junit:4.12' testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' - androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' + androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.2') { + exclude module: 'support-annotations' + } debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' } @@ -66,4 +68,8 @@ android { disable 'ExtraTranslation' abortOnError false } + + configurations.all { + resolutionStrategy.force 'com.android.support:support-annotations:25.2.0' + } } From 0beac41e4b308f4c73a6d02c5bc9e1d319c7808a Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 17:58:51 +1000 Subject: [PATCH 16/25] Set fragment layout --- app/src/main/res/layout/fragment_no_permissions.xml | 12 +++++++++--- app/src/main/res/values/strings.xml | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/layout/fragment_no_permissions.xml b/app/src/main/res/layout/fragment_no_permissions.xml index 320b0e14d..8ea6f3a45 100644 --- a/app/src/main/res/layout/fragment_no_permissions.xml +++ b/app/src/main/res/layout/fragment_no_permissions.xml @@ -4,10 +4,16 @@ android:layout_height="match_parent" tools:context="fr.free.nrw.commons.nearby.NoPermissionsFragment"> - + android:gravity="center" + android:paddingLeft="30dp" + android:paddingRight="30dp" + android:text="@string/nearby_needs_permissions" + android:textAlignment="center" + android:textSize="18sp" /> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b98314cc0..6c66ca101 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -194,11 +194,11 @@ Tap this message (or hit back) to skip this step. Logout Tutorial + Nearby places cannot be displayed without location permissions Nearby places cannot be found without location permissions no description found Commons Article WikiData Article - - Hello blank fragment + From c8a0142c3e789d9a886a5fe8cca58721bd5d5511 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 18:08:34 +1000 Subject: [PATCH 17/25] Cancel AsyncTask and add backstack --- .../free/nrw/commons/nearby/NearbyActivity.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index f2af322a0..ce47409e1 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -121,16 +121,19 @@ public class NearbyActivity extends NavigationBaseActivity { startLookingForNearby(); } else { //If permission not granted, display notification that Nearby Places cannot be displayed - /** +/** int duration = Toast.LENGTH_LONG; Toast toast = Toast.makeText(this, R.string.no_location_permission, duration); - toast.show();*/ - + toast.show(); +*/ //TODO: Open a fragment saying permissions not granted instead + if (nearbyAsyncTask != null) { + nearbyAsyncTask.cancel(true); + } FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - Fragment fragment = new NoPermissionsFragment(); - fragment.setArguments(bundle); - fragmentTransaction.replace(R.id.container, fragment); + Fragment noPermissionsFragment = new NoPermissionsFragment(); + fragmentTransaction.replace(R.id.container, noPermissionsFragment); + fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } } From c3d4b029c1d33d98559bbf0db1b2ffc317c559c8 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 18:17:10 +1000 Subject: [PATCH 18/25] Fill out onCreateView in fragment --- .../fr/free/nrw/commons/nearby/NoPermissionsFragment.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java index cd622d522..edc559e4d 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java @@ -7,7 +7,9 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import butterknife.ButterKnife; import fr.free.nrw.commons.R; +import timber.log.Timber; /** * A simple {@link Fragment} subclass. @@ -24,7 +26,11 @@ public class NoPermissionsFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_no_permissions, container, false); + Timber.d("NoPermissionsFragment created"); + View view = inflater.inflate(R.layout.fragment_no_permissions, container, false); + ButterKnife.bind(this, view); + + return view; } } From a8d302bdf34a6b2faaa53ffe7e4d43ae8c60c904 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 18:17:23 +1000 Subject: [PATCH 19/25] Remove progress bar and add null check for locationManager --- .../java/fr/free/nrw/commons/nearby/NearbyActivity.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index ce47409e1..667aa19d2 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -130,6 +130,9 @@ public class NearbyActivity extends NavigationBaseActivity { if (nearbyAsyncTask != null) { nearbyAsyncTask.cancel(true); } + if (progressBar != null) { + progressBar.setVisibility(View.GONE); + } FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); Fragment noPermissionsFragment = new NoPermissionsFragment(); fragmentTransaction.replace(R.id.container, noPermissionsFragment); @@ -219,7 +222,9 @@ public class NearbyActivity extends NavigationBaseActivity { @Override protected void onDestroy() { super.onDestroy(); - locationManager.unregisterLocationManager(); + if (locationManager != null) { + locationManager.unregisterLocationManager(); + } } private class NearbyAsyncTask extends AsyncTask> { From 6091cc7465e430d98fea104a1c2368d2c867b635 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 18:26:05 +1000 Subject: [PATCH 20/25] Remove addToBackStack We do not actually want users to go back to this fragment --- app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 667aa19d2..8fbe7b6b8 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -136,7 +136,6 @@ public class NearbyActivity extends NavigationBaseActivity { FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); Fragment noPermissionsFragment = new NoPermissionsFragment(); fragmentTransaction.replace(R.id.container, noPermissionsFragment); - fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } } From 8e059691f955fe6a6744d144b2f913ac8b831bc3 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 18:27:39 +1000 Subject: [PATCH 21/25] Tidy up code --- .../java/fr/free/nrw/commons/nearby/NearbyActivity.java | 8 +------- .../fr/free/nrw/commons/nearby/NoPermissionsFragment.java | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 8fbe7b6b8..1763b1a47 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -120,13 +120,7 @@ public class NearbyActivity extends NavigationBaseActivity { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { startLookingForNearby(); } else { - //If permission not granted, display notification that Nearby Places cannot be displayed -/** - int duration = Toast.LENGTH_LONG; - Toast toast = Toast.makeText(this, R.string.no_location_permission, duration); - toast.show(); -*/ - //TODO: Open a fragment saying permissions not granted instead + //If permission not granted, go to page that says Nearby Places cannot be displayed if (nearbyAsyncTask != null) { nearbyAsyncTask.cancel(true); } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java index edc559e4d..5065a7d93 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java @@ -1,6 +1,5 @@ package fr.free.nrw.commons.nearby; - import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; @@ -12,24 +11,19 @@ import fr.free.nrw.commons.R; import timber.log.Timber; /** - * A simple {@link Fragment} subclass. + * Tells user that Nearby Places cannot be displayed if location permissions are denied */ public class NoPermissionsFragment extends Fragment { - public NoPermissionsFragment() { - // Required empty public constructor } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment Timber.d("NoPermissionsFragment created"); View view = inflater.inflate(R.layout.fragment_no_permissions, container, false); ButterKnife.bind(this, view); - return view; } From 6bdd4e64c05c230d7714c49991e9d8c60c6fa84d Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 18:32:13 +1000 Subject: [PATCH 22/25] Remove automatic Gradle changes from previous commit Not sure wtf happened... --- app/build.gradle | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1be98b1f7..c279008f7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,18 +3,6 @@ apply plugin: 'jacoco-android' apply from: 'quality.gradle' dependencies { - compile "com.android.support:support-v4:${project.supportLibVersion}" - compile "com.android.support:appcompat-v7:${project.supportLibVersion}" - compile "com.android.support:design:${project.supportLibVersion}" - compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION" - annotationProcessor "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION" - compile('com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.2@aar') { - transitive = true - } - compile "com.google.guava:guava:${GUAVA_VERSION}" - - androidTestCompile "com.android.support:support-annotations:${project.supportLibVersion}" - compile 'com.github.nicolas-raoul:Quadtree:ac16ea8035bf07' compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar' compile 'in.yuvi:http.fluent:1.3' @@ -22,18 +10,27 @@ dependencies { compile 'ch.acra:acra:4.7.0' compile 'org.mediawiki:api:1.3' compile 'commons-codec:commons-codec:1.10' + compile "com.android.support:support-v4:${project.supportLibVersion}" + compile "com.android.support:appcompat-v7:${project.supportLibVersion}" + compile "com.android.support:design:${project.supportLibVersion}" compile 'com.google.code.gson:gson:2.7' + compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION" + annotationProcessor "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION" compile 'com.jakewharton.timber:timber:4.5.1' + compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:5.0.2@aar'){ + transitive=true + } compile 'com.facebook.fresco:fresco:1.3.0' compile 'com.facebook.stetho:stetho:1.5.0' - compile 'com.android.support:support-v4:25.3.1' + compile "com.google.guava:guava:${GUAVA_VERSION}" + testCompile 'junit:junit:4.12' - testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' - androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.2') { - exclude module: 'support-annotations' - } + androidTestCompile "com.android.support:support-annotations:${project.supportLibVersion}" + androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' + debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' + testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' } android { @@ -54,8 +51,7 @@ android { buildTypes { release { - minifyEnabled false - // See https://stackoverflow.com/questions/40232404/google-play-apk-and-android-studio-apk-usb-debug-behaving-differently - proguard.cfg modification alone insufficient. + minifyEnabled false // See https://stackoverflow.com/questions/40232404/google-play-apk-and-android-studio-apk-usb-debug-behaving-differently - proguard.cfg modification alone insufficient. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } debug { From 8e35b20874d17e6d19bd99aa53cfcf5e4a0ff7a2 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 18:34:44 +1000 Subject: [PATCH 23/25] Remove unneeded string --- app/src/main/res/values/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6c66ca101..664487d9f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -195,7 +195,6 @@ Tap this message (or hit back) to skip this step. Tutorial Nearby places cannot be displayed without location permissions - Nearby places cannot be found without location permissions no description found Commons Article WikiData Article From 8dc923f204314062c41f900ea91ded8627ca69fe Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 2 Jun 2017 22:41:29 +1000 Subject: [PATCH 24/25] Add FIXME comment to temporary fix --- app/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/app/build.gradle b/app/build.gradle index c279008f7..8a01106c1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,6 +65,7 @@ android { abortOnError false } + //FIXME: Temporary fix for https://github.com/commons-app/apps-android-commons/issues/709 configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:25.2.0' } From 7d5469dcfa153a34c18d3c4468058bba38ce1b0d Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 3 Jun 2017 12:40:27 +1000 Subject: [PATCH 25/25] Add null check for nearbyAsyncTask --- .../nrw/commons/nearby/NearbyActivity.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 1763b1a47..f2d3b6726 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -175,16 +175,18 @@ public class NearbyActivity extends NavigationBaseActivity { } private void showMapView() { - if (!isMapViewActive) { - isMapViewActive = true; - if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { - setMapFragment(); - } + if (nearbyAsyncTask != null) { + if (!isMapViewActive) { + isMapViewActive = true; + if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { + setMapFragment(); + } - } else { - isMapViewActive = false; - if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { - setListFragment(); + } else { + isMapViewActive = false; + if (nearbyAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { + setListFragment(); + } } } }