Skip to content

Commit 70754e7

Browse files
committed
Add POST_NOTIFICATION permission to hello_SDL
1 parent 8dd082d commit 70754e7

2 files changed

Lines changed: 45 additions & 16 deletions

File tree

android/hello_sdl_android/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
<uses-permission android:name="android.permission.BLUETOOTH" />
77
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"
88
tools:targetApi="31"/>
9+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"
10+
tools:targetApi="33"/>
911
<uses-permission android:name="android.permission.INTERNET" />
1012
<!-- Required to check if WiFi is enabled -->
1113
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/MainActivity.java

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package com.sdl.hellosdlandroid;
22

3+
import android.Manifest;
34
import android.content.Intent;
45
import android.content.pm.PackageManager;
56
import android.os.Build;
67
import android.os.Bundle;
78
import android.view.Menu;
89
import android.view.MenuItem;
9-
1010
import androidx.annotation.NonNull;
1111
import androidx.appcompat.app.AppCompatActivity;
1212
import androidx.core.app.ActivityCompat;
1313
import androidx.core.content.ContextCompat;
14-
15-
import static android.Manifest.permission.BLUETOOTH_CONNECT;
14+
import java.util.ArrayList;
1615

1716
public class MainActivity extends AppCompatActivity {
1817

@@ -23,12 +22,14 @@ protected void onCreate(Bundle savedInstanceState) {
2322
super.onCreate(savedInstanceState);
2423
setContentView(R.layout.activity_main);
2524

26-
2725
if (BuildConfig.TRANSPORT.equals("MULTI") || BuildConfig.TRANSPORT.equals("MULTI_HB")) {
28-
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && !checkPermission()) {
29-
requestPermission();
30-
return;
26+
if(permissionsNeeded().length >0){
27+
requestPermission(permissionsNeeded(),REQUEST_CODE);
28+
if (checkBTPermission()) {
29+
return;
30+
}
3131
}
32+
3233
//If we are connected to a module we want to start our SdlService
3334
SdlReceiver.queryForConnectedService(this);
3435
} else if (BuildConfig.TRANSPORT.equals("TCP")){
@@ -37,24 +38,50 @@ protected void onCreate(Bundle savedInstanceState) {
3738
}
3839
}
3940

40-
private boolean checkPermission() {
41-
return PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(getApplicationContext(), BLUETOOTH_CONNECT);
41+
private boolean checkBTPermission() {
42+
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && !checkPermission(Manifest.permission.BLUETOOTH_CONNECT);
43+
}
44+
45+
private boolean checkPNPermission() {
46+
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !checkPermission(Manifest.permission.POST_NOTIFICATIONS);
47+
}
48+
49+
private boolean checkPermission(String permission) {
50+
return PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(getApplicationContext(), permission);
51+
}
52+
53+
private void requestPermission(String[] permissions, int REQUEST_CODE) {
54+
ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE);
55+
4256
}
4357

44-
private void requestPermission() {
45-
ActivityCompat.requestPermissions(this, new String[]{BLUETOOTH_CONNECT}, REQUEST_CODE);
58+
private String[] permissionsNeeded() {
59+
ArrayList<String> result = new ArrayList<>();
60+
if (checkBTPermission()) {
61+
result.add(Manifest.permission.BLUETOOTH_CONNECT);
62+
}
63+
if (checkPNPermission()) {
64+
result.add(Manifest.permission.POST_NOTIFICATIONS);
65+
}
66+
return (result.toArray(new String[result.size()]));
4667
}
4768

4869
@Override
4970
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
5071
switch (requestCode) {
5172
case REQUEST_CODE:
5273
if (grantResults.length > 0) {
53-
54-
boolean btConnectGranted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
55-
56-
if (btConnectGranted) {
57-
SdlReceiver.queryForConnectedService(this);
74+
for (int i = 0; i < grantResults.length; i++) {
75+
if (permissions[i].equals(Manifest.permission.BLUETOOTH_CONNECT)) {
76+
boolean btConnectGranted =
77+
grantResults[i] == PackageManager.PERMISSION_GRANTED;
78+
if (btConnectGranted) {
79+
SdlReceiver.queryForConnectedService(this);
80+
}
81+
} else if (permissions[i].equals(Manifest.permission.POST_NOTIFICATIONS)) {
82+
boolean postNotificationGranted =
83+
grantResults[i] == PackageManager.PERMISSION_GRANTED;
84+
}
5885
}
5986
}
6087
break;

0 commit comments

Comments
 (0)