Skip to content

Commit c87a210

Browse files
committed
Don't ask for the location permissions in the Connection screen
1 parent 006a1d4 commit c87a210

File tree

14 files changed

+81
-145
lines changed

14 files changed

+81
-145
lines changed

EngineDriver/src/main/java/jmri/enginedriver/connection_activity.java

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -767,12 +767,23 @@ private void set_labels() {
767767
v.setText(String.format(getString(R.string.throttle_name), throttleName));
768768

769769
String ssid = mainapp.client_ssid;
770-
if ( (ssid.equals("UNKNOWN")) || (ssid.equals("<unknown ssid>")) ) {
771-
if ( (mainapp.clientLocationServiceEnabled) || (mainapp.client_type.equals("MOBILE")) ) {
770+
StringBuilder warningTextBuilder = new StringBuilder("");
771+
if ( (ssid.equals("UNKNOWN")) || (ssid.equals("<unknown ssid>")) || (ssid.equals("Can't access SSID")) ) {
772+
if (mainapp.client_type.equals("MOBILE")) {
772773
ssid = getString(R.string.statusThreadedAppNotconnectedToWifi);
773774
} else {
774775
ssid = getString(R.string.statusThreadedAppNoLocationService);
775-
discoveredServersWarning.setText(R.string.statusThreadedAppServerDiscoveryNoLocationService);
776+
if (!mainapp.clientLocationServiceEnabled) {
777+
warningTextBuilder.append(getString(R.string.statusThreadedAppServerDiscoveryNoLocationService));
778+
warningTextBuilder.append(" ");
779+
}
780+
PermissionsHelper phi = PermissionsHelper.getInstance();
781+
if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.ACCESS_FINE_LOCATION)) {
782+
warningTextBuilder.append(getString(R.string.statusThreadedAppServerDiscoveryAccessFineLocationNotGranted));
783+
warningTextBuilder.append(" ");
784+
}
785+
warningTextBuilder.append(getString(R.string.statusThreadedAppServerDiscoverySsidUnavailable));
786+
discoveredServersWarning.setText(warningTextBuilder.toString());
776787
}
777788
discoveredServersWarning.setVisibility(VISIBLE);
778789
} else {
@@ -839,38 +850,22 @@ void getWifiInfo() {
839850
// phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.ACCESS_FINE_LOCATION);
840851
// }
841852
// }
842-
//<!-- needed for API 33 -->
843-
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
844-
845-
if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.ACCESS_FINE_LOCATION)) {
846-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
847-
phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.ACCESS_FINE_LOCATION);
848-
}
849-
}
850-
if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.ACCESS_COARSE_LOCATION)) {
851-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
852-
phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.ACCESS_COARSE_LOCATION);
853-
}
854-
}
855-
if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.ACCESS_WIFI_STATE)) {
856-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
857-
phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.ACCESS_WIFI_STATE);
858-
}
853+
// if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.ACCESS_COARSE_LOCATION)) {
854+
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
855+
// phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.ACCESS_COARSE_LOCATION);
856+
// }
857+
// }
858+
if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.ACCESS_WIFI_STATE)) {
859+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
860+
phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.ACCESS_WIFI_STATE);
859861
}
860-
if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.INTERNET)) {
861-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
862-
phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.INTERNET);
863-
}
862+
}
863+
if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.INTERNET)) {
864+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
865+
phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.INTERNET);
864866
}
867+
}
865868

866-
// } else {
867-
// if (!phi.isPermissionGranted(connection_activity.this, PermissionsHelper.NEARBY_WIFI_DEVICES)) {
868-
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
869-
// phi.requestNecessaryPermissions(connection_activity.this, PermissionsHelper.NEARBY_WIFI_DEVICES);
870-
// }
871-
// }
872-
// }
873-
//<!-- needed for API 33 -->
874869
prefAllowMobileData = prefs.getBoolean("prefAllowMobileData", false);
875870

876871
mainapp.client_ssid = wifiinfo.getSSID();
@@ -1237,6 +1232,7 @@ public void navigateToHandler(@RequestCodes int requestCode) {
12371232

12381233
@Override
12391234
public void onRequestPermissionsResult(@RequestCodes int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
1235+
// if (!PermissionsHelper.getInstance().processRequestPermissionsResult(connection_activity.this, requestCode, permissions, grantResults, true)) {
12401236
if (!PermissionsHelper.getInstance().processRequestPermissionsResult(connection_activity.this, requestCode, permissions, grantResults)) {
12411237
Log.d("Engine_Driver", "Unrecognised request - send up to super class");
12421238
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

EngineDriver/src/main/java/jmri/enginedriver/intro/intro_activity.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import jmri.enginedriver.threaded_application;
4040
import jmri.enginedriver.util.PermissionsHelper;
4141

42-
public class intro_activity extends AppIntro2 {
42+
public class intro_activity extends AppIntro2 implements PermissionsHelper.PermissionsHelperGrantedCallback {
4343
private boolean introComplete = false;
4444
private SharedPreferences prefs;
4545
// private String prefThrottleType = "";
@@ -86,7 +86,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
8686
// slideNumber = slideNumber + 1;
8787
// askForPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, slideNumber);
8888
// }
89-
// }
89+
// }=
9090
////<!-- needed for API 33 -->
9191
//
9292
////<!-- needed for API 33 -->
@@ -296,10 +296,23 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
296296
setWizardMode(true);
297297
}
298298

299+
300+
@SuppressLint("SwitchIntDef")
301+
public void navigateToHandler(@PermissionsHelper.RequestCodes int requestCode) {
302+
Log.d("Engine_Driver", "introActivity: navigateToHandler:" + requestCode);
303+
if (!PermissionsHelper.getInstance().isPermissionGranted(this, requestCode)) {
304+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
305+
PermissionsHelper.getInstance().requestNecessaryPermissions(this, requestCode);
306+
}
307+
} else {
308+
// do nothing
309+
Log.d("Engine_Driver", "Preferences: Unrecognised permissions request code: " + requestCode);
310+
}
311+
}
299312
@Override
300313
public void onRequestPermissionsResult(@PermissionsHelper.RequestCodes int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
301314
if (!PermissionsHelper.getInstance().processRequestPermissionsResult(this, requestCode, permissions, grantResults)) {
302-
Log.d("Engine_Driver", "Unrecognised request - send up to super class");
315+
Log.d("Engine_Driver", "introActivity: Unrecognised request - send up to super class");
303316
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
304317
}
305318
}

EngineDriver/src/main/java/jmri/enginedriver/util/PermissionsHelper.java

Lines changed: 3 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -32,23 +32,12 @@ public class PermissionsHelper {
3232
*/
3333
@Retention(RetentionPolicy.SOURCE)
3434
@IntDef({
35-
// CLEAR_CONNECTION_LIST,
36-
// READ_CONNECTION_LIST,
37-
// STORE_CONNECTION_LIST,
3835
READ_PHONE_STATE,
39-
// READ_PREFERENCES,
40-
// STORE_PREFERENCES,
41-
// READ_FUNCTION_SETTINGS,
42-
// STORE_FUNCTION_SETTINGS,
43-
// STORE_LOG_FILES,
44-
// CONNECT_TO_SERVER,
36+
/// CONNECT_TO_SERVER,
4537
WRITE_SETTINGS,
4638
ACCESS_FINE_LOCATION,
47-
// STORE_SERVER_AUTO_PREFERENCES,
48-
// READ_SERVER_AUTO_PREFERENCES,
4939
VIBRATE,
5040
READ_IMAGES,
51-
// READ_LEGACY_FILES,
5241
// NEARBY_WIFI_DEVICES,
5342
READ_MEDIA_IMAGES,
5443
READ_MEDIA_VISUAL_USER_SELECTED,
@@ -62,23 +51,12 @@ public class PermissionsHelper {
6251
/**
6352
* List of possible permission request codes
6453
*/
65-
// public static final int CLEAR_CONNECTION_LIST = 32;
66-
// public static final int READ_CONNECTION_LIST = 33;
67-
// public static final int STORE_CONNECTION_LIST = 34;
6854
public static final int READ_PHONE_STATE = 35;
69-
// public static final int READ_PREFERENCES = 36;
70-
// public static final int STORE_PREFERENCES = 37;
71-
// public static final int READ_FUNCTION_SETTINGS = 38;
72-
// public static final int STORE_FUNCTION_SETTINGS = 39;
7355
// public static final int CONNECT_TO_SERVER = 40;
7456
public static final int WRITE_SETTINGS = 41;
7557
public static final int ACCESS_FINE_LOCATION = 42;
76-
// public static final int STORE_SERVER_AUTO_PREFERENCES = 43;
77-
// public static final int READ_SERVER_AUTO_PREFERENCES = 44;
78-
// public static final int STORE_LOG_FILES = 45;
7958
public static final int VIBRATE = 46;
8059
public static final int READ_IMAGES = 47;
81-
// public static final int READ_LEGACY_FILES = 48;
8260

8361
//<!-- needed for API 33 -->
8462
// public static final int NEARBY_WIFI_DEVICES = 49;
@@ -161,29 +139,10 @@ private String getMessage(final Context context, @RequestCodes final int request
161139
// Get the relevant rationale message based on request code
162140
// All possible request codes should be considered
163141
switch (requestCode) {
164-
// case READ_CONNECTION_LIST:
165-
// return context.getResources().getString(R.string.permissionsReadRecentConnections);
166-
// case CLEAR_CONNECTION_LIST:
167-
// return context.getResources().getString(R.string.permissionsClearRecentConnections);
168-
// case STORE_CONNECTION_LIST:
169-
// return context.getResources().getString(R.string.permissionsStoreRecentConnections);
170-
// case READ_PREFERENCES:
171-
// return context.getResources().getString(R.string.permissionsReadPreferences);
172142
case READ_IMAGES:
173143
return context.getResources().getString(R.string.permissionsREAD_IMAGES);
174-
// case READ_LEGACY_FILES:
175-
// return context.getResources().getString(R.string.permissionsReadLegacyFiles);
176-
// case STORE_PREFERENCES:
177-
// case STORE_SERVER_AUTO_PREFERENCES:
178-
// case READ_SERVER_AUTO_PREFERENCES:
179-
// case STORE_LOG_FILES:
180-
// return context.getResources().getString(R.string.permissionsStorePreferences);
181144
case READ_PHONE_STATE:
182145
return context.getResources().getString(R.string.permissionsReadPhoneState);
183-
// case STORE_FUNCTION_SETTINGS:
184-
// return context.getResources().getString(R.string.permissionsStoreFunctionSettings);
185-
// case READ_FUNCTION_SETTINGS:
186-
// return context.getResources().getString(R.string.permissionsReadFunctionSettings);
187146
// case CONNECT_TO_SERVER:
188147
// return context.getResources().getString(R.string.permissionsConnectToServer);
189148
case WRITE_SETTINGS:
@@ -227,50 +186,29 @@ public void requestNecessaryPermissions(final Activity activity, @RequestCodes f
227186
// All possible request codes should be considered
228187
Log.d("Engine_Driver", "isDialogOpen at requestNecessaryPermissions? " + isDialogOpen);
229188
if (!isDialogOpen) {
189+
Log.d("Engine_Driver", "Requesting " + getManifestPermissionId(requestCode)+ " permissions");
230190
switch (requestCode) {
231-
// case READ_CONNECTION_LIST:
232-
// case CLEAR_CONNECTION_LIST:
233-
// case STORE_CONNECTION_LIST:
234-
// case READ_PREFERENCES:
235-
// case STORE_PREFERENCES:
236-
// case STORE_FUNCTION_SETTINGS:
237-
// case STORE_LOG_FILES:
238-
// case READ_FUNCTION_SETTINGS:
239-
// case STORE_SERVER_AUTO_PREFERENCES:
240-
// case READ_SERVER_AUTO_PREFERENCES:
241-
// Log.d("Engine_Driver", "Requesting STORAGE permissions");
242-
// activity.requestPermissions(new String[]{
243-
// Manifest.permission.WRITE_EXTERNAL_STORAGE,
244-
// Manifest.permission.READ_EXTERNAL_STORAGE},
245-
// requestCode);
246-
// break;
247-
// case READ_LEGACY_FILES:
248191
case READ_IMAGES:
249-
Log.d("Engine_Driver", "Requesting STORAGE permissions");
250192
activity.requestPermissions(new String[]{
251193
Manifest.permission.READ_EXTERNAL_STORAGE},
252194
requestCode);
253195
// break;
254196
case READ_PHONE_STATE:
255-
Log.d("Engine_Driver", "Requesting PHONE permissions");
256197
activity.requestPermissions(new String[]{
257198
Manifest.permission.READ_PHONE_STATE},
258199
requestCode);
259200
break;
260201
case ACCESS_FINE_LOCATION:
261-
Log.d("Engine_Driver", "Requesting ACCESS_FINE_LOCATION permissions");
262202
activity.requestPermissions(new String[]{
263203
Manifest.permission.ACCESS_FINE_LOCATION},
264204
requestCode);
265205
break;
266206
// case CONNECT_TO_SERVER:
267-
// Log.d("Engine_Driver", "Requesting PHONE permission");
268207
// activity.requestPermissions(new String[]{
269208
// Manifest.permission.READ_PHONE_STATE},
270209
// requestCode);
271210
// break;
272211
case WRITE_SETTINGS:
273-
Log.d("Engine_Driver", "Requesting WRITE_SETTINGS permissions");
274212
if (Build.VERSION.SDK_INT < 23) {
275213
activity.requestPermissions(new String[]{
276214
Manifest.permission.WRITE_SETTINGS},
@@ -282,22 +220,19 @@ public void requestNecessaryPermissions(final Activity activity, @RequestCodes f
282220
}
283221
break;
284222
case VIBRATE:
285-
Log.d("Engine_Driver", "Requesting VIBRATE permissions");
286223
activity.requestPermissions(new String[]{
287224
Manifest.permission.VIBRATE},
288225
requestCode);
289226
break;
290227

291228
case READ_MEDIA_IMAGES: // needed for API 33
292-
Log.d("Engine_Driver", "Requesting READ_MEDIA_IMAGES permissions");
293229
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
294230
activity.requestPermissions(new String[]{
295231
Manifest.permission.READ_MEDIA_IMAGES},
296232
requestCode);
297233
}
298234
break;
299235
case READ_MEDIA_VISUAL_USER_SELECTED: // needed for API 34
300-
Log.d("Engine_Driver", "Requesting READ_MEDIA_VISUAL_USER_SELECTED permissions");
301236
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
302237
activity.requestPermissions(new String[]{
303238
Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED},
@@ -316,31 +251,26 @@ public void requestNecessaryPermissions(final Activity activity, @RequestCodes f
316251
Manifest.permission.POST_NOTIFICATIONS},
317252
requestCode);
318253
}
319-
Log.d("Engine_Driver", "Requesting POST_NOTIFICATIONS permissions");
320254
break;
321255
//<!-- needed for API 33 -->
322256

323257
case ACCESS_COARSE_LOCATION:
324-
Log.d("Engine_Driver", "Requesting ACCESS_COURSE_LOCATION permissions");
325258
activity.requestPermissions(new String[]{
326259
Manifest.permission.ACCESS_COARSE_LOCATION},
327260
requestCode);
328261
break;
329262
case ACCESS_WIFI_STATE:
330-
Log.d("Engine_Driver", "Requesting ACCESS_WIFI_STATE permissions");
331263
activity.requestPermissions(new String[]{
332264
Manifest.permission.ACCESS_WIFI_STATE},
333265
requestCode);
334266
break;
335267
case INTERNET:
336-
Log.d("Engine_Driver", "Requesting INTERNET permissions");
337268
activity.requestPermissions(new String[]{
338269
Manifest.permission.INTERNET},
339270
requestCode);
340271
break;
341-
342-
343272
}
273+
344274
} else {
345275
Log.d("Engine_Driver", "Permissions dialog is opened - don't ask yet...");
346276
}
@@ -449,19 +379,6 @@ public boolean isPermissionGranted(final Context context, @RequestCodes final in
449379
// Determine which permissions to check based on request code
450380
// All possible request codes should be considered
451381
switch (requestCode) {
452-
// case READ_CONNECTION_LIST:
453-
// case CLEAR_CONNECTION_LIST:
454-
// case STORE_CONNECTION_LIST:
455-
// case READ_PREFERENCES:
456-
// case STORE_PREFERENCES:
457-
// case STORE_FUNCTION_SETTINGS:
458-
// case STORE_LOG_FILES:
459-
// case READ_FUNCTION_SETTINGS:
460-
// case STORE_SERVER_AUTO_PREFERENCES:
461-
// case READ_SERVER_AUTO_PREFERENCES:
462-
// return ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
463-
// ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
464-
// case READ_LEGACY_FILES:
465382
case READ_IMAGES:
466383
return ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
467384
case READ_PHONE_STATE:
@@ -522,19 +439,6 @@ private boolean showPermissionRationale(final Activity activity, @RequestCodes f
522439
// Determine which permission rationales to check based on request code
523440
// All possible request codes should be considered
524441
switch (requestCode) {
525-
// case READ_CONNECTION_LIST:
526-
// case CLEAR_CONNECTION_LIST:
527-
// case STORE_CONNECTION_LIST:
528-
// case READ_PREFERENCES:
529-
// case STORE_PREFERENCES:
530-
// case STORE_FUNCTION_SETTINGS:
531-
// case STORE_LOG_FILES:
532-
// case READ_FUNCTION_SETTINGS:
533-
// case STORE_SERVER_AUTO_PREFERENCES:
534-
// case READ_SERVER_AUTO_PREFERENCES:
535-
// return ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.READ_EXTERNAL_STORAGE) &&
536-
// ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
537-
// case READ_LEGACY_FILES:
538442
case READ_IMAGES:
539443
return ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.READ_EXTERNAL_STORAGE);
540444
case READ_PHONE_STATE:

0 commit comments

Comments
 (0)