2525import android .content .pm .PackageManager ;
2626import android .graphics .drawable .Drawable ;
2727import android .net .Uri ;
28+ import android .os .Build ;
2829import android .os .Bundle ;
2930import android .os .Handler ;
3031import android .os .Looper ;
8485 * @author Tobias Schoene (the openbit)
8586 */
8687public class TabBrowserActivity extends AppCompatActivity implements OnClickListener {
87- private static final String [] permissions = new String []{
88- Manifest .permission .INTERNET ,
89- Manifest .permission .ACCESS_WIFI_STATE ,
90- Manifest .permission .ACCESS_NETWORK_STATE ,
91- Manifest .permission .CHANGE_WIFI_STATE ,
92- Manifest .permission .CHANGE_WIFI_MULTICAST_STATE ,
93- Manifest .permission .READ_EXTERNAL_STORAGE ,
94- Manifest .permission .WRITE_EXTERNAL_STORAGE ,
95- Manifest .permission .RECEIVE_BOOT_COMPLETED ,
96- Manifest .permission .WAKE_LOCK ,
97- Manifest .permission .REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
98-
99- };
88+
10089 private static final String CURRENT_TAB_KEY = "currentTab" ;
10190 //FIXME dirty
10291 public static boolean leftSettings = false ;
@@ -111,14 +100,64 @@ public class TabBrowserActivity extends AppCompatActivity implements OnClickList
111100 private Intent serverService = null ;
112101 private Toast volumeToast = null ;
113102
103+ //https://developer.android.com/about/versions/14/changes/partial-photo-video-access
104+ private static String [] getPermissions () {
105+ if (android .os .Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
106+ return new String []{
107+ Manifest .permission .INTERNET ,
108+ Manifest .permission .ACCESS_WIFI_STATE ,
109+ Manifest .permission .ACCESS_NETWORK_STATE ,
110+ Manifest .permission .CHANGE_WIFI_STATE ,
111+ Manifest .permission .CHANGE_WIFI_MULTICAST_STATE ,
112+ Manifest .permission .WRITE_EXTERNAL_STORAGE ,
113+ Manifest .permission .RECEIVE_BOOT_COMPLETED ,
114+ Manifest .permission .WAKE_LOCK ,
115+ Manifest .permission .REQUEST_IGNORE_BATTERY_OPTIMIZATIONS ,
116+ Manifest .permission .READ_MEDIA_AUDIO ,
117+ Manifest .permission .READ_MEDIA_IMAGES ,
118+ Manifest .permission .READ_MEDIA_VIDEO ,
119+ Manifest .permission .MANAGE_EXTERNAL_STORAGE
120+
121+ };
122+ } else if (android .os .Build .VERSION .SDK_INT >= Build .VERSION_CODES .R ) {
123+ return new String []{
124+ Manifest .permission .INTERNET ,
125+ Manifest .permission .ACCESS_WIFI_STATE ,
126+ Manifest .permission .ACCESS_NETWORK_STATE ,
127+ Manifest .permission .CHANGE_WIFI_STATE ,
128+ Manifest .permission .CHANGE_WIFI_MULTICAST_STATE ,
129+ Manifest .permission .WRITE_EXTERNAL_STORAGE ,
130+ Manifest .permission .READ_EXTERNAL_STORAGE ,
131+ Manifest .permission .RECEIVE_BOOT_COMPLETED ,
132+ Manifest .permission .WAKE_LOCK ,
133+ Manifest .permission .REQUEST_IGNORE_BATTERY_OPTIMIZATIONS ,
134+ Manifest .permission .MANAGE_EXTERNAL_STORAGE
135+ };
136+ }
137+ return new String []{
138+ Manifest .permission .INTERNET ,
139+ Manifest .permission .ACCESS_WIFI_STATE ,
140+ Manifest .permission .ACCESS_NETWORK_STATE ,
141+ Manifest .permission .CHANGE_WIFI_STATE ,
142+ Manifest .permission .CHANGE_WIFI_MULTICAST_STATE ,
143+ Manifest .permission .READ_EXTERNAL_STORAGE ,
144+ Manifest .permission .WRITE_EXTERNAL_STORAGE ,
145+ Manifest .permission .RECEIVE_BOOT_COMPLETED ,
146+ Manifest .permission .WAKE_LOCK ,
147+ Manifest .permission .REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
148+
149+ };
150+
151+ }
152+
114153 @ Override
115154 protected void onSaveInstanceState (@ NonNull Bundle outState ) {
116155 super .onSaveInstanceState (outState );
117156 outState .putInt (CURRENT_TAB_KEY , tabLayout .getSelectedTabPosition ());
118157 }
119158
120159 private boolean checkIfAlreadyhavePermission () {
121- for (String permission : permissions ) {
160+ for (String permission : getPermissions () ) {
122161 int permissionState = ContextCompat .checkSelfPermission (this , permission );
123162 if (permissionState == PackageManager .PERMISSION_DENIED ) {
124163 return false ;
@@ -128,7 +167,7 @@ private boolean checkIfAlreadyhavePermission() {
128167 }
129168
130169 private void requestForSpecificPermission () {
131- ActivityCompat .requestPermissions (this , permissions ,
170+ ActivityCompat .requestPermissions (this , getPermissions () ,
132171 101 );
133172
134173 }
0 commit comments