|
4 | 4 | import androidx.activity.result.contract.ActivityResultContracts; |
5 | 5 | import androidx.annotation.NonNull; |
6 | 6 | import androidx.appcompat.app.AppCompatActivity; |
7 | | -import androidx.core.app.ActivityCompat; |
8 | | -import androidx.core.content.ContextCompat; |
9 | 7 | import androidx.core.view.MenuCompat; |
10 | 8 | import androidx.preference.PreferenceManager; |
11 | 9 |
|
12 | | -import android.Manifest; |
13 | 10 | import android.annotation.SuppressLint; |
14 | 11 | import android.bluetooth.BluetoothDevice; |
15 | 12 | import android.content.BroadcastReceiver; |
|
63 | 60 | import com.radio.codec2talkie.storage.message.group.MessageGroupActivity; |
64 | 61 | import com.radio.codec2talkie.tools.AudioTools; |
65 | 62 | import com.radio.codec2talkie.tools.DeviceIdTools; |
| 63 | +import com.radio.codec2talkie.tools.PermissionsManager; |
66 | 64 | import com.radio.codec2talkie.tools.RadioTools; |
67 | 65 | import com.radio.codec2talkie.transport.TransportFactory; |
68 | 66 | import com.radio.codec2talkie.connect.UsbConnectActivity; |
69 | 67 | import com.radio.codec2talkie.connect.UsbPortHandler; |
70 | 68 |
|
71 | | -import java.util.LinkedList; |
72 | | -import java.util.List; |
73 | 69 | import java.util.Locale; |
74 | 70 |
|
75 | 71 | public class MainActivity extends AppCompatActivity implements ServiceConnection { |
76 | 72 |
|
77 | 73 | private static final String TAG = MainActivity.class.getSimpleName(); |
78 | 74 |
|
79 | | - private final static int REQUEST_PERMISSIONS = 1; |
80 | | - |
81 | 75 | // S9 level at -93 dBm as per VHF Managers Handbook |
82 | 76 | private final static int S_METER_S0_VALUE_DB = -147; |
83 | 77 | // from S0 up to S9+40 |
@@ -256,7 +250,7 @@ private void startTransportConnection() { |
256 | 250 | Log.i(TAG, "startTransportConnection(" + transportType + ")"); |
257 | 251 | if (AppService.isRunning) { |
258 | 252 | startAppService(AppService.transportType); |
259 | | - } else if (requestPermissions()) { |
| 253 | + } else if (PermissionsManager.requestPermissions(this)) { |
260 | 254 | switch (transportType) { |
261 | 255 | case LOOPBACK: |
262 | 256 | _textConnInfo.setText(R.string.main_status_loopback_test); |
@@ -395,49 +389,6 @@ protected void startMessagesActivity() { |
395 | 389 | _messagesActivityLauncher.launch(new Intent(this, MessageGroupActivity.class)); |
396 | 390 | } |
397 | 391 |
|
398 | | - protected boolean requestPermissions() { |
399 | | - List<String> permissionsToRequest = new LinkedList<>(); |
400 | | - List<String> versionRequiredPermissions = getRequiredPermissions(); |
401 | | - if (!versionRequiredPermissions.isEmpty()) { |
402 | | - for (String permission : versionRequiredPermissions) { |
403 | | - if (ContextCompat.checkSelfPermission(MainActivity.this, permission) == PackageManager.PERMISSION_DENIED) { |
404 | | - permissionsToRequest.add(permission); |
405 | | - } |
406 | | - } |
407 | | - } |
408 | | - if (!permissionsToRequest.isEmpty()) { |
409 | | - ActivityCompat.requestPermissions( |
410 | | - MainActivity.this, |
411 | | - permissionsToRequest.toArray(new String[0]), |
412 | | - REQUEST_PERMISSIONS); |
413 | | - return false; |
414 | | - } |
415 | | - return true; |
416 | | - } |
417 | | - |
418 | | - @NonNull |
419 | | - private static List<String> getRequiredPermissions() { |
420 | | - List<String> versionRequiredPermissions = new LinkedList<>(); |
421 | | - versionRequiredPermissions.add(Manifest.permission.BLUETOOTH); |
422 | | - versionRequiredPermissions.add(Manifest.permission.BLUETOOTH_ADMIN); |
423 | | - versionRequiredPermissions.add(Manifest.permission.RECORD_AUDIO); |
424 | | - versionRequiredPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION); |
425 | | - versionRequiredPermissions.add(Manifest.permission.ACCESS_COARSE_LOCATION); |
426 | | - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { |
427 | | - versionRequiredPermissions.add(Manifest.permission.BLUETOOTH_CONNECT); |
428 | | - versionRequiredPermissions.add(Manifest.permission.BLUETOOTH_SCAN); |
429 | | - } |
430 | | - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { |
431 | | - versionRequiredPermissions.add(Manifest.permission.FOREGROUND_SERVICE); |
432 | | - } |
433 | | - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { |
434 | | - versionRequiredPermissions.add(Manifest.permission.POST_NOTIFICATIONS); |
435 | | - versionRequiredPermissions.add(Manifest.permission.NEARBY_WIFI_DEVICES); |
436 | | - versionRequiredPermissions.add(Manifest.permission.CAMERA); |
437 | | - } |
438 | | - return versionRequiredPermissions; |
439 | | - } |
440 | | - |
441 | 392 | private void bindAppService() { |
442 | 393 | if (!bindService(new Intent(this, AppService.class), this, Context.BIND_AUTO_CREATE)) { |
443 | 394 | Log.e(TAG, "Service does not exists or no access"); |
@@ -669,7 +620,6 @@ public boolean onKeyDown(int keyCode, KeyEvent event) { |
669 | 620 |
|
670 | 621 | @Override |
671 | 622 | public void onBackPressed() { |
672 | | - |
673 | 623 | if (_backPressedTimestamp + BACK_EXIT_MS_DELAY > System.currentTimeMillis()) { |
674 | 624 | exitApplication(); |
675 | 625 | } else { |
@@ -718,7 +668,7 @@ public boolean onTouch(View v, MotionEvent event) { |
718 | 668 | @Override |
719 | 669 | public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { |
720 | 670 | super.onRequestPermissionsResult(requestCode, permissions, grantResults); |
721 | | - if (requestCode == REQUEST_PERMISSIONS) { |
| 671 | + if (requestCode == PermissionsManager.REQUEST_PERMISSIONS) { |
722 | 672 | boolean allGranted = true; |
723 | 673 | for (int result : grantResults) { |
724 | 674 | if (result != PackageManager.PERMISSION_GRANTED) { |
|
0 commit comments