X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosdroid%2Fapp%2Fsrc%2Fmain%2Fjava%2Forg%2Faltusmetrum%2FAltosDroid%2FAltosDroid.java;h=6d70872123954b1a88ba3fc3b897529e9b4da9f8;hb=HEAD;hp=05a023acde3d60f51d27b3caddc1043291336b3c;hpb=66152b176bad12fbff3188397c607793c0bdd380;p=fw%2Faltos diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroid.java index 05a023ac..6d708721 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroid.java @@ -674,7 +674,13 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, if (device != null) { Intent i = new Intent(this, AltosDroid.class); - PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent("hello world", null, this, AltosDroid.class), 0); + int flag; + + if (android.os.Build.VERSION.SDK_INT >= 31) // android.os.Build.VERSION_CODES.S + flag = 33554432; // PendingIntent.FLAG_MUTABLE + else + flag = 0; + PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent("hello world", null, this, AltosDroid.class), flag); if (AltosUsb.request_permission(this, device, pi)) { connectUsb(device); @@ -793,8 +799,14 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, public boolean have_location_permission = false; public boolean have_storage_permission = false; + public boolean have_bluetooth_permission = false; + public boolean have_bluetooth_connect_permission = false; + public boolean have_bluetooth_scan_permission = false; public boolean asked_permission = false; + static final String BLUETOOTH_CONNECT = "android.permission.BLUETOOTH_CONNECT"; + static final String BLUETOOTH_SCAN = "android.permission.BLUETOOTH_SCAN"; + AltosMapOnline map_online; void @@ -817,6 +829,15 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { have_storage_permission = true; } + if (permissions[i].equals(Manifest.permission.BLUETOOTH)) { + have_bluetooth_permission = true; + } + if (permissions[i].equals(BLUETOOTH_CONNECT)) { + have_bluetooth_connect_permission = true; + } + if (permissions[i].equals(BLUETOOTH_SCAN)) { + have_bluetooth_scan_permission = true; + } } } } @@ -842,15 +863,49 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, { have_storage_permission = true; } - int count = (have_location_permission ? 0 : 1) + (have_storage_permission ? 0 : 1); + if (ActivityCompat.checkSelfPermission(this, + Manifest.permission.BLUETOOTH) + == PackageManager.PERMISSION_GRANTED) + { + have_bluetooth_permission = true; + } + if (ActivityCompat.checkSelfPermission(this, + BLUETOOTH_CONNECT) + == PackageManager.PERMISSION_GRANTED) + { + have_bluetooth_connect_permission = true; + } + if (ActivityCompat.checkSelfPermission(this, + BLUETOOTH_SCAN) + == PackageManager.PERMISSION_GRANTED) + { + have_bluetooth_scan_permission = true; + } + int count = 0; + if (!have_location_permission) + count += 1; + if (!have_storage_permission) + count += 1; + if (!have_bluetooth_permission) + count += 1; + if (!have_bluetooth_connect_permission) + count += 1; + if (!have_bluetooth_scan_permission) + count += 1; if (count > 0) { String[] permissions = new String[count]; int i = 0; if (!have_location_permission) permissions[i++] = Manifest.permission.ACCESS_FINE_LOCATION; - if (!have_location_permission) + if (!have_storage_permission) permissions[i++] = Manifest.permission.WRITE_EXTERNAL_STORAGE; + if (!have_bluetooth_permission) + permissions[i++] = Manifest.permission.BLUETOOTH; + if (!have_bluetooth_connect_permission) + permissions[i++] = BLUETOOTH_CONNECT; + if (!have_bluetooth_scan_permission) + permissions[i++] = BLUETOOTH_SCAN; ActivityCompat.requestPermissions(this, permissions, MY_PERMISSION_REQUEST); } }