summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit70754e7ecb03b65f073a12a83ef765835439ad87 (patch)
tree840917289f9dec7aea90347743fd314c06676c43
parent8dd082d70bf3423c5a64d6ad09ce35f496b0a905 (diff)
downloadsdl_android-70754e7ecb03b65f073a12a83ef765835439ad87.tar.gz
Add POST_NOTIFICATION permission to hello_SDL
-rwxr-xr-xandroid/hello_sdl_android/src/main/AndroidManifest.xml2
-rwxr-xr-xandroid/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/MainActivity.java59
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;