Skip to content

Commit cbb0d3a

Browse files
author
Robert Lucey
committed
Bump min android
Needed to fix permissions because of it bumped min version because play store was complaining
1 parent 7644585 commit cbb0d3a

File tree

9 files changed

+69
-44
lines changed

9 files changed

+69
-44
lines changed

app/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ plugins {
33
}
44

55
android {
6-
compileSdk 31
6+
compileSdk 33
77

88
defaultConfig {
99
applicationId "via.android.roadquality"
10-
minSdk 29
11-
targetSdk 31
12-
versionCode 10
13-
versionName "2.3"
10+
minSdk 33
11+
targetSdk 33
12+
versionCode 15
13+
versionName "2.8"
1414

1515
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1616
}

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
android:required="true" />
77

88
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
9+
<uses-permission android:name="android.permission.ACCESS_GPS" />
910
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1011
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
1112
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

app/src/main/java/via/android/roadquality/MainActivity.java

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package via.android.roadquality;
22

3+
import static java.security.AccessController.getContext;
4+
35
import android.Manifest;
46
import android.app.PendingIntent;
57
import android.content.Intent;
68
import android.content.SharedPreferences;
9+
import android.content.pm.PackageManager;
710
import android.os.Build;
811
import android.os.Bundle;
912
import android.view.View;
@@ -13,8 +16,11 @@
1316

1417
import androidx.annotation.NonNull;
1518
import androidx.appcompat.app.AppCompatActivity;
19+
import androidx.core.app.ActivityCompat;
20+
import androidx.core.content.ContextCompat;
1621
import androidx.navigation.NavController;
1722
import androidx.navigation.Navigation;
23+
import androidx.navigation.fragment.NavHostFragment;
1824
import androidx.navigation.ui.AppBarConfiguration;
1925
import androidx.navigation.ui.NavigationUI;
2026

@@ -26,6 +32,7 @@
2632
import com.google.android.material.bottomnavigation.BottomNavigationView;
2733

2834
import java.util.ArrayList;
35+
import java.util.Arrays;
2936
import java.util.List;
3037
import java.util.Objects;
3138
import java.util.UUID;
@@ -34,8 +41,9 @@
3441
import via.android.roadquality.databinding.ActivityMainBinding;
3542
import via.android.roadquality.utils.LokiLogger;
3643

44+
import android.content.Context;
3745

38-
public class MainActivity extends AppCompatActivity /*implements EasyPermissions.PermissionCallbacks */{
46+
public class MainActivity extends AppCompatActivity /*implements EasyPermissions.PermissionCallbacks */ {
3947

4048
private LokiLogger logger = new LokiLogger("MainActivity.java");
4149

@@ -47,33 +55,42 @@ public class MainActivity extends AppCompatActivity /*implements EasyPermissions
4755
Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
4856
Manifest.permission.READ_EXTERNAL_STORAGE,
4957
Manifest.permission.WRITE_EXTERNAL_STORAGE,
58+
Manifest.permission.ACCESS_BACKGROUND_LOCATION
5059
};
5160

5261
private boolean hasRequiredPermissions() {
5362
logger.log("Called hasRequiredPermissions...");
54-
return EasyPermissions.hasPermissions(
55-
this,
56-
perms
57-
);
63+
logger.log(String.valueOf(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)));
64+
return ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
65+
ContextCompat.checkSelfPermission(this, Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_GRANTED &&
66+
ContextCompat.checkSelfPermission(this, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) == PackageManager.PERMISSION_GRANTED &&
67+
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
68+
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
69+
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) == PackageManager.PERMISSION_GRANTED;
5870
}
5971

60-
private void requestRequiredPermissions(){
72+
private void requestRequiredPermissions() {
6173
logger.log("Requesting required permissions...");
62-
EasyPermissions.requestPermissions(
63-
this,
64-
"Via needs the following permissions to function properly",
65-
permissionsRequestCode,
66-
perms
67-
);
74+
// Manifest.permission.ACCESS_BACKGROUND_LOCATION
75+
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACTIVITY_RECOGNITION, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 101);
76+
6877
}
6978

7079
@Override
71-
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
72-
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
73-
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults);
74-
75-
logger.log("Trying to set up broadcast receiver after permissions request result...");
76-
this.setUpActivityTransitionBroadcastReceiver();
80+
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
81+
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
82+
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED
83+
) {
84+
ActivityCompat.requestPermissions(
85+
this,
86+
new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
87+
1
88+
);
89+
}
90+
} else {
91+
// Permission was denied
92+
// You may want to inform the user that the operation cannot be performed
93+
}
7794
}
7895

7996
private void makeFullScreen() {
@@ -157,11 +174,7 @@ private List<ActivityTransition> getActivityTransitionsList() {
157174
private void setUpActivityTransitionBroadcastReceiver() {
158175
logger.log("Setting up ActivityTransitionBroadcastReceiver...");
159176

160-
// TODO: Needs to check background too:
161-
if (this.hasRequiredPermissions() && EasyPermissions.hasPermissions(
162-
this,
163-
Manifest.permission.ACCESS_BACKGROUND_LOCATION)
164-
) {
177+
if (this.hasRequiredPermissions()) {
165178
logger.log("Have sufficient permissions for background activities");
166179
ActivityTransitionRequest request = new ActivityTransitionRequest(this.getActivityTransitionsList());
167180

@@ -173,7 +186,7 @@ private void setUpActivityTransitionBroadcastReceiver() {
173186

174187
Task<Void> task = ActivityRecognition.getClient(this)
175188
.requestActivityUpdates(150 * 1000, pendingIntent);
176-
//.requestActivityTransitionUpdates(request, pendingIntent);
189+
//.requestActivityTransitionUpdates(request, pendingIntent);
177190

178191
task.addOnSuccessListener(unused -> logger.log("task was successful"));
179192
task.addOnFailureListener(unused -> logger.log("task was unsuccessful"));
@@ -214,7 +227,9 @@ protected void onCreate(Bundle savedInstanceState) {
214227
R.id.navigation_settings_view
215228
).build();
216229

217-
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
230+
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
231+
.findFragmentById(R.id.nav_host_fragment_activity_main);
232+
NavController navController = navHostFragment.getNavController();
218233
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
219234
NavigationUI.setupWithNavController(navView, navController);
220235

app/src/main/java/via/android/roadquality/models/Journey.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class Journey {
4343
public boolean sendInPartials;
4444
private Context context;
4545

46-
private LokiLogger logger;
46+
private final LokiLogger logger;
4747

4848
public Journey() {
4949
this.logger = new LokiLogger("Journey.java");
@@ -107,7 +107,7 @@ public String filePath() {
107107
if (!viaBase.exists()) {
108108
viaBase.mkdirs();
109109
}
110-
return viaBase.toString() + "/" + this.uuid + ".json";
110+
return viaBase + "/" + this.uuid + ".json";
111111
}
112112

113113
public void save() throws IOException, JSONException {
@@ -275,7 +275,7 @@ public void onResponse(@NonNull Call call, @NonNull Response response) {
275275

276276
@Override
277277
public void onFailure(@NonNull Call call, @NonNull IOException e) {
278-
new LokiLogger(context, "Journey.java").log("JourneyPostData", "Post data failure: " + e.toString());
278+
new LokiLogger(context, "Journey.java").log("JourneyPostData", "Post data failure: " + e);
279279
}
280280
});
281281
}

app/src/main/java/via/android/roadquality/models/Journeys.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package via.android.roadquality.models;
22

3-
import org.json.JSONException;
4-
53
import java.util.ArrayList;
64

75
public class Journeys {

app/src/main/java/via/android/roadquality/services/LocationService.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,8 @@ public void onLocationChanged(Location location) {
4747
}
4848

4949
public void onLocationResult(@NonNull LocationResult locationResult) {
50-
if (locationResult == null) {
51-
return;
52-
}
53-
5450
for (Location l : locationResult.getLocations()) {
5551
this.onLocationChanged(l);
5652
}
5753
}
58-
}
54+
}

app/src/main/java/via/android/roadquality/services/MainService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public void onDestroy() {
161161
this.journey.send(true);
162162
logger.log("Journey sent!");
163163
} catch (IOException | JSONException e) {
164-
logger.log("journey save/send error hit :(" + e.toString() + " " + e.getMessage());
164+
logger.log("journey save/send error hit :(" + e + " " + e.getMessage());
165165
e.printStackTrace();
166166
}
167167

app/src/main/java/via/android/roadquality/ui/home/HomeFragment.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package via.android.roadquality.ui.home;
22

3+
import android.Manifest;
34
import android.content.Intent;
5+
import android.content.pm.PackageManager;
46
import android.os.Bundle;
57
import android.os.SystemClock;
68
import android.view.LayoutInflater;
79
import android.view.View;
810
import android.view.ViewGroup;
911
import android.widget.Button;
12+
import android.widget.Toast;
1013

1114
import androidx.annotation.NonNull;
15+
import androidx.core.app.ActivityCompat;
1216
import androidx.fragment.app.Fragment;
1317

1418
import via.android.roadquality.AutomaticJourneyCreator;
@@ -23,12 +27,13 @@
2327
import com.google.android.gms.location.DetectedActivity;
2428

2529
import java.util.ArrayList;
30+
import java.util.Arrays;
2631
import java.util.List;
2732

2833

2934
public class HomeFragment extends Fragment {
3035

31-
private LokiLogger logger = new LokiLogger("HomeFragment.java");
36+
private final LokiLogger logger = new LokiLogger("HomeFragment.java");
3237
private FragmentHomeBinding binding;
3338

3439
public View onCreateView(
@@ -57,6 +62,16 @@ public void onDestroyView() {
5762
private void sendCycleEvent(boolean entered) {
5863

5964
if (entered) {
65+
66+
CharSequence text = "Hello toast!";
67+
int duration = Toast.LENGTH_SHORT;
68+
69+
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED
70+
) {
71+
Toast toast = Toast.makeText(getContext(), "Must allow location all the time", Toast.LENGTH_LONG);
72+
toast.show();
73+
return;
74+
}
6075
this.logger.log("Manually firing start cycle activity transition event");
6176
} else {
6277
this.logger.log("Manually firing stop cycle activity transition event");
@@ -80,7 +95,7 @@ private void sendCycleEvent(boolean entered) {
8095
this.logger.log("Event failed to broadcast:");
8196
this.logger.log(exception.toString());
8297
this.logger.log(exception.getMessage());
83-
this.logger.log(exception.getStackTrace().toString());
98+
this.logger.log(Arrays.toString(exception.getStackTrace()));
8499
}
85100
}
86101
}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ buildscript {
55
mavenCentral()
66
}
77
dependencies {
8-
classpath 'com.android.tools.build:gradle:8.0.0'
8+
classpath 'com.android.tools.build:gradle:8.1.1'
99

1010
// NOTE: Do not place your application dependencies here; they belong
1111
// in the individual module build.gradle files

0 commit comments

Comments
 (0)