Skip to content

Commit 089cabc

Browse files
authored
chore(android): update minSdk to API Level 23 (#14303)
* chore(android): update minSdk to 23 * update to 24
1 parent 6babec0 commit 089cabc

File tree

18 files changed

+139
-241
lines changed

18 files changed

+139
-241
lines changed

android/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ android {
1313
ndkVersion project.ext.tiNdkVersion
1414
defaultConfig {
1515
applicationId 'com.titanium.test'
16-
minSdkVersion 21
16+
minSdkVersion 24
1717
targetSdkVersion 35
1818
versionCode 1
1919
versionName '1.0'

android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -661,22 +661,20 @@ public void stopService(IntentProxy intentProxy)
661661
@Kroll.method
662662
public boolean hasPermission(Object permissionObject)
663663
{
664-
if (Build.VERSION.SDK_INT >= 23) {
665-
ArrayList<String> permissions = new ArrayList<>();
666-
if (permissionObject instanceof String) {
667-
permissions.add((String) permissionObject);
668-
} else if (permissionObject instanceof Object[]) {
669-
for (Object permission : (Object[]) permissionObject) {
670-
if (permission instanceof String) {
671-
permissions.add((String) permission);
672-
}
664+
ArrayList<String> permissions = new ArrayList<>();
665+
if (permissionObject instanceof String) {
666+
permissions.add((String) permissionObject);
667+
} else if (permissionObject instanceof Object[]) {
668+
for (Object permission : (Object[]) permissionObject) {
669+
if (permission instanceof String) {
670+
permissions.add((String) permission);
673671
}
674672
}
675-
Activity currentActivity = TiApplication.getInstance().getCurrentActivity();
676-
for (String permission : permissions) {
677-
if (currentActivity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
678-
return false;
679-
}
673+
}
674+
Activity currentActivity = TiApplication.getInstance().getCurrentActivity();
675+
for (String permission : permissions) {
676+
if (currentActivity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
677+
return false;
680678
}
681679
}
682680
return true;
@@ -690,31 +688,29 @@ public KrollPromise<KrollDict> requestPermissions(final Object permissionObject,
690688
// to fire the callback when we resolve/reject?
691689
final KrollObject callbackThisObject = getKrollObject();
692690
return KrollPromise.create((promise) -> {
693-
if (Build.VERSION.SDK_INT >= 23) {
694-
List<String> permissions = new ArrayList<String>();
695-
if (permissionObject instanceof String) {
696-
permissions.add((String) permissionObject);
697-
} else if (permissionObject instanceof Object[]) {
698-
for (Object permission : (Object[]) permissionObject) {
699-
if (permission instanceof String) {
700-
permissions.add((String) permission);
701-
}
702-
}
703-
}
704-
Activity currentActivity = TiApplication.getInstance().getCurrentActivity();
705-
List<String> filteredPermissions = new ArrayList<String>();
706-
for (String permission : permissions) {
707-
if (currentActivity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
708-
continue;
691+
List<String> permissions = new ArrayList<String>();
692+
if (permissionObject instanceof String) {
693+
permissions.add((String) permissionObject);
694+
} else if (permissionObject instanceof Object[]) {
695+
for (Object permission : (Object[]) permissionObject) {
696+
if (permission instanceof String) {
697+
permissions.add((String) permission);
709698
}
710-
filteredPermissions.add(permission);
711699
}
712-
if (filteredPermissions.size() > 0) {
713-
TiBaseActivity.registerPermissionRequestCallback(REQUEST_CODE, permissionCallback,
714-
callbackThisObject, promise);
715-
currentActivity.requestPermissions(filteredPermissions.toArray(new String[0]), REQUEST_CODE);
716-
return;
700+
}
701+
Activity currentActivity = TiApplication.getInstance().getCurrentActivity();
702+
List<String> filteredPermissions = new ArrayList<String>();
703+
for (String permission : permissions) {
704+
if (currentActivity.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
705+
continue;
717706
}
707+
filteredPermissions.add(permission);
708+
}
709+
if (filteredPermissions.size() > 0) {
710+
TiBaseActivity.registerPermissionRequestCallback(REQUEST_CODE, permissionCallback,
711+
callbackThisObject, promise);
712+
currentActivity.requestPermissions(filteredPermissions.toArray(new String[0]), REQUEST_CODE);
713+
return;
718714
}
719715
// FIXME: If we're not on API level 23+, shouldn't we reject/error?
720716
KrollDict response = new KrollDict();

android/modules/calendar/src/java/ti/modules/titanium/calendar/CalendarProxy.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import android.content.pm.PackageManager;
2828
import android.database.Cursor;
2929
import android.net.Uri;
30-
import android.os.Build;
3130
import android.provider.CalendarContract;
3231
import android.text.format.DateUtils;
3332
import android.content.ContentProviderOperation;
@@ -94,9 +93,6 @@ public static ArrayList<CalendarProxy> queryCalendars(String query, String[] que
9493

9594
public static boolean hasCalendarPermissions()
9695
{
97-
if (Build.VERSION.SDK_INT < 23) {
98-
return true;
99-
}
10096
Activity currentActivity = TiApplication.getAppCurrentActivity();
10197
if (currentActivity != null
10298
&& currentActivity.checkSelfPermission("android.permission.READ_CALENDAR")

android/modules/contacts/src/java/ti/modules/titanium/contacts/CommonContactsApi.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import android.database.Cursor;
2323
import android.graphics.Bitmap;
2424
import android.net.Uri;
25-
import android.os.Build;
2625
import android.provider.ContactsContract;
2726

2827
public abstract class CommonContactsApi
@@ -57,9 +56,6 @@ protected static CommonContactsApi getInstance()
5756

5857
public boolean hasContactsPermissions()
5958
{
60-
if (Build.VERSION.SDK_INT < 23) {
61-
return true;
62-
}
6359
Context context = TiApplication.getInstance().getApplicationContext();
6460
// If READ_CONTACTS is granted, WRITE_CONTACTS is also granted if the permission is included in manifest.
6561
if (context != null

android/modules/filesystem/src/java/ti/modules/titanium/filesystem/FilesystemModule.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import android.app.Activity;
1515
import android.content.Context;
1616
import android.content.pm.PackageManager;
17-
import android.os.Build;
1817
import org.appcelerator.kroll.KrollDict;
1918
import org.appcelerator.kroll.KrollFunction;
2019
import org.appcelerator.kroll.KrollInvocation;
@@ -103,10 +102,6 @@ public FileProxy getFile(KrollInvocation invocation, Object[] parts)
103102
@Kroll.method
104103
private boolean hasStoragePermissions()
105104
{
106-
if (Build.VERSION.SDK_INT < 23) {
107-
return true;
108-
}
109-
110105
Context context = TiApplication.getInstance().getApplicationContext();
111106

112107
return ((context.checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE)

android/modules/geolocation/src/java/ti/modules/titanium/geolocation/GeolocationModule.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -503,10 +503,6 @@ private boolean getManualMode()
503503
@Kroll.method
504504
public boolean hasLocationPermissions()
505505
{
506-
if (Build.VERSION.SDK_INT < 23) {
507-
return true;
508-
}
509-
510506
Context context = TiApplication.getInstance();
511507
int result = context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);
512508
result &= context.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION);

android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -627,10 +627,6 @@ private void launchCameraXActivity(KrollDict cameraOptions, TiViewProxy overLayP
627627
@Kroll.method
628628
public boolean hasCameraPermissions()
629629
{
630-
if (Build.VERSION.SDK_INT < 23) {
631-
return true;
632-
}
633-
634630
TiApplication app = TiApplication.getInstance();
635631
int status = app.checkSelfPermission(Manifest.permission.CAMERA);
636632
if (status != PackageManager.PERMISSION_GRANTED) {
@@ -648,9 +644,6 @@ public boolean hasCameraPermissions()
648644
@Kroll.method
649645
public boolean hasAudioRecorderPermissions()
650646
{
651-
if (Build.VERSION.SDK_INT < 23) {
652-
return true;
653-
}
654647
int status = TiApplication.getInstance().checkSelfPermission(Manifest.permission.RECORD_AUDIO);
655648
return (status == PackageManager.PERMISSION_GRANTED);
656649
}
@@ -664,7 +657,7 @@ public boolean hasPhotoGalleryPermissions()
664657
int status_img = TiApplication.getInstance().checkSelfPermission(Manifest.permission.READ_MEDIA_IMAGES);
665658
int status_vid = TiApplication.getInstance().checkSelfPermission(Manifest.permission.READ_MEDIA_VIDEO);
666659
return (status_img == PackageManager.PERMISSION_GRANTED && status_vid == PackageManager.PERMISSION_GRANTED);
667-
} else if (Build.VERSION.SDK_INT < 23 || Build.VERSION.SDK_INT >= 29) {
660+
} else if (Build.VERSION.SDK_INT >= 29) {
668661
// We don't have to request permission on versions older than Android 6.0 or Android 10/11
669662
return true;
670663
}
@@ -901,7 +894,7 @@ public void saveToPhotoGallery(Object arg, @Kroll.argument(optional = true) Hash
901894
if (Build.VERSION.SDK_INT >= 29) {
902895
contentValues.put(MediaStore.MediaColumns.DATE_TAKEN, unixTime);
903896
}
904-
ensureExternalPublicMediaDirectoryExists();
897+
905898
if (isVideo) {
906899
contentUri = contentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues);
907900
} else {
@@ -1005,7 +998,7 @@ private static Uri createExternalMediaContentUri(boolean isVideo, boolean isPubl
1005998
if (Build.VERSION.SDK_INT >= 29) {
1006999
contentValues.put(MediaStore.MediaColumns.DATE_TAKEN, unixTime);
10071000
}
1008-
ensureExternalPublicMediaDirectoryExists();
1001+
10091002
if (isVideo) {
10101003
contentUri = contentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues);
10111004
} else {
@@ -1041,20 +1034,6 @@ private static String createExternalMediaName()
10411034
return normalizedAppName + "_" + (new SimpleDateFormat("yyyyMMdd_HHmmssSSS")).format(new Date());
10421035
}
10431036

1044-
private static void ensureExternalPublicMediaDirectoryExists()
1045-
{
1046-
// Work-around bug on Android 5.x and below where saving a file to gallery via MediaStore insert()
1047-
// will fail if its directory on external storage doesn't exist yet. Create it if needed.
1048-
// Bug Report: https://issuetracker.google.com/issues/37002888
1049-
if (Build.VERSION.SDK_INT < 23) {
1050-
File externalDir = Environment.getExternalStorageDirectory();
1051-
if (externalDir != null) {
1052-
File cameraDir = new File(externalDir, "DCIM/Camera");
1053-
cameraDir.mkdirs();
1054-
}
1055-
}
1056-
}
1057-
10581037
@Kroll.setProperty
10591038
public void setCameraFlashMode(int flashMode)
10601039
{

android/modules/media/src/java/ti/modules/titanium/media/TiCameraXActivity.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import android.content.pm.PackageManager;
1515
import android.database.Cursor;
1616
import android.net.Uri;
17-
import android.os.Build;
1817
import android.os.Bundle;
1918
import android.os.Environment;
2019
import android.provider.MediaStore;
@@ -667,9 +666,6 @@ public CameraXConfig getCameraXConfig()
667666

668667
private boolean hasAudioRecorderPermissions()
669668
{
670-
if (Build.VERSION.SDK_INT < 23) {
671-
return true;
672-
}
673669
int status = TiApplication.getInstance().checkSelfPermission(Manifest.permission.RECORD_AUDIO);
674670
return (status == PackageManager.PERMISSION_GRANTED);
675671
}

android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIEditText.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ private ActionMode.Callback onWrap(ActionMode.Callback callback)
342342
}
343343

344344
// Wrap the given callback used to override context menu handling.
345-
if ((Build.VERSION.SDK_INT >= 23) && (callback instanceof ActionMode.Callback2)) {
345+
if (callback instanceof ActionMode.Callback2) {
346346
callback = new ActionModeCallback2Wrapper((ActionMode.Callback2) callback, excludeMenuIdSet);
347347
} else {
348348
callback = new ActionModeCallbackWrapper(callback, excludeMenuIdSet);

android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIProgressIndicator.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,6 @@
2222
import android.app.Activity;
2323
import android.app.ProgressDialog;
2424
import android.content.DialogInterface;
25-
import android.graphics.Color;
26-
import android.graphics.PorterDuff;
27-
import android.graphics.PorterDuffColorFilter;
28-
import android.os.Build;
29-
import android.widget.ProgressBar;
30-
import com.google.android.material.color.MaterialColors;
3125

3226
public class TiUIProgressIndicator extends TiUIView implements
3327
DialogInterface.OnShowListener, DialogInterface.OnCancelListener, DialogInterface.OnDismissListener
@@ -286,26 +280,6 @@ protected void handleHide()
286280
@Override
287281
public void onShow(DialogInterface dialog)
288282
{
289-
// Fetch progress dialog reference.
290-
// Note: Argument won't match "progressDialog" member variable if hide() was called before dialog was shown.
291-
if ((dialog instanceof ProgressDialog) == false) {
292-
return;
293-
}
294-
ProgressDialog progressDialog = (ProgressDialog) dialog;
295-
296-
// Work-around Android 5.x and older issue where it ignores "indeterminateTint" color in theme.
297-
// Only happens to the indeterminate type. The determinate type is okay.
298-
if ((Build.VERSION.SDK_INT < 23) && progressDialog.isIndeterminate()) {
299-
var view = progressDialog.findViewById(android.R.id.progress);
300-
if (view instanceof ProgressBar) {
301-
int colorValue = MaterialColors.getColor(
302-
progressDialog.getContext(), android.R.attr.indeterminateTint, Color.TRANSPARENT);
303-
var drawable = ((ProgressBar) view).getIndeterminateDrawable();
304-
if ((colorValue != Color.TRANSPARENT) && (drawable != null)) {
305-
drawable.setColorFilter(new PorterDuffColorFilter(colorValue, PorterDuff.Mode.SRC_IN));
306-
}
307-
}
308-
}
309283
}
310284

311285
@Override

0 commit comments

Comments
 (0)