diff options
author | “JKAST” <julian.kast@live.com> | 2022-08-25 15:09:06 -0400 |
---|---|---|
committer | “JKAST” <julian.kast@live.com> | 2022-08-25 15:09:06 -0400 |
commit | 70754e7ecb03b65f073a12a83ef765835439ad87 (patch) | |
tree | 840917289f9dec7aea90347743fd314c06676c43 | |
parent | 8dd082d70bf3423c5a64d6ad09ce35f496b0a905 (diff) | |
download | sdl_android-70754e7ecb03b65f073a12a83ef765835439ad87.tar.gz |
Add POST_NOTIFICATION permission to hello_SDL
-rwxr-xr-x | android/hello_sdl_android/src/main/AndroidManifest.xml | 2 | ||||
-rwxr-xr-x | android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/MainActivity.java | 59 |
2 files changed, 45 insertions, 16 deletions
diff --git a/android/hello_sdl_android/src/main/AndroidManifest.xml b/android/hello_sdl_android/src/main/AndroidManifest.xml index 415aa66c2..6b577c5a2 100755 --- a/android/hello_sdl_android/src/main/AndroidManifest.xml +++ b/android/hello_sdl_android/src/main/AndroidManifest.xml @@ -6,6 +6,8 @@ <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:targetApi="31"/> + <uses-permission android:name="android.permission.POST_NOTIFICATIONS" + tools:targetApi="33"/> <uses-permission android:name="android.permission.INTERNET" /> <!-- Required to check if WiFi is enabled --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> diff --git a/android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/MainActivity.java b/android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/MainActivity.java index 8497e3b73..05270ffb0 100755 --- a/android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/MainActivity.java +++ b/android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/MainActivity.java @@ -1,18 +1,17 @@ package com.sdl.hellosdlandroid; +import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; - import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; - -import static android.Manifest.permission.BLUETOOTH_CONNECT; +import java.util.ArrayList; public class MainActivity extends AppCompatActivity { @@ -23,12 +22,14 @@ public class MainActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - if (BuildConfig.TRANSPORT.equals("MULTI") || BuildConfig.TRANSPORT.equals("MULTI_HB")) { - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && !checkPermission()) { - requestPermission(); - return; + if(permissionsNeeded().length >0){ + requestPermission(permissionsNeeded(),REQUEST_CODE); + if (checkBTPermission()) { + return; + } } + //If we are connected to a module we want to start our SdlService SdlReceiver.queryForConnectedService(this); } else if (BuildConfig.TRANSPORT.equals("TCP")){ @@ -37,12 +38,32 @@ public class MainActivity extends AppCompatActivity { } } - private boolean checkPermission() { - return PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(getApplicationContext(), BLUETOOTH_CONNECT); + private boolean checkBTPermission() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && !checkPermission(Manifest.permission.BLUETOOTH_CONNECT); + } + + private boolean checkPNPermission() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !checkPermission(Manifest.permission.POST_NOTIFICATIONS); + } + + private boolean checkPermission(String permission) { + return PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(getApplicationContext(), permission); + } + + private void requestPermission(String[] permissions, int REQUEST_CODE) { + ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE); + } - private void requestPermission() { - ActivityCompat.requestPermissions(this, new String[]{BLUETOOTH_CONNECT}, REQUEST_CODE); + private String[] permissionsNeeded() { + ArrayList<String> result = new ArrayList<>(); + if (checkBTPermission()) { + result.add(Manifest.permission.BLUETOOTH_CONNECT); + } + if (checkPNPermission()) { + result.add(Manifest.permission.POST_NOTIFICATIONS); + } + return (result.toArray(new String[result.size()])); } @Override @@ -50,11 +71,17 @@ public class MainActivity extends AppCompatActivity { switch (requestCode) { case REQUEST_CODE: if (grantResults.length > 0) { - - boolean btConnectGranted = grantResults[0] == PackageManager.PERMISSION_GRANTED; - - if (btConnectGranted) { - SdlReceiver.queryForConnectedService(this); + for (int i = 0; i < grantResults.length; i++) { + if (permissions[i].equals(Manifest.permission.BLUETOOTH_CONNECT)) { + boolean btConnectGranted = + grantResults[i] == PackageManager.PERMISSION_GRANTED; + if (btConnectGranted) { + SdlReceiver.queryForConnectedService(this); + } + } else if (permissions[i].equals(Manifest.permission.POST_NOTIFICATIONS)) { + boolean postNotificationGranted = + grantResults[i] == PackageManager.PERMISSION_GRANTED; + } } } break; |