11package via .android .roadquality ;
22
3+ import static java .security .AccessController .getContext ;
4+
35import android .Manifest ;
46import android .app .PendingIntent ;
57import android .content .Intent ;
68import android .content .SharedPreferences ;
9+ import android .content .pm .PackageManager ;
710import android .os .Build ;
811import android .os .Bundle ;
912import android .view .View ;
1316
1417import androidx .annotation .NonNull ;
1518import androidx .appcompat .app .AppCompatActivity ;
19+ import androidx .core .app .ActivityCompat ;
20+ import androidx .core .content .ContextCompat ;
1621import androidx .navigation .NavController ;
1722import androidx .navigation .Navigation ;
23+ import androidx .navigation .fragment .NavHostFragment ;
1824import androidx .navigation .ui .AppBarConfiguration ;
1925import androidx .navigation .ui .NavigationUI ;
2026
2632import com .google .android .material .bottomnavigation .BottomNavigationView ;
2733
2834import java .util .ArrayList ;
35+ import java .util .Arrays ;
2936import java .util .List ;
3037import java .util .Objects ;
3138import java .util .UUID ;
3441import via .android .roadquality .databinding .ActivityMainBinding ;
3542import 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
0 commit comments