From fe45b3385146710209e95661cfff8983c25d6b3b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 20 Oct 2020 19:23:50 +0200 Subject: [PATCH] use case-insensitive file extension comparison for Apk.isApk() foo.APK is valid and installable, though not recommended. Without this, foo.APK would be copied to /sdcard/Downloads, which seems wrong --- app/src/main/java/org/fdroid/fdroid/data/Apk.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/data/Apk.java b/app/src/main/java/org/fdroid/fdroid/data/Apk.java index 284d54304..8bf1c7ad7 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/Apk.java +++ b/app/src/main/java/org/fdroid/fdroid/data/Apk.java @@ -10,10 +10,10 @@ import android.os.Build; import android.os.Environment; import android.os.Parcel; import android.os.Parcelable; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import android.text.TextUtils; import android.webkit.MimeTypeMap; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.fasterxml.jackson.annotation.JacksonInject; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -24,6 +24,7 @@ import java.io.File; import java.util.Collections; import java.util.Date; import java.util.HashSet; +import java.util.Locale; /** * Represents a single package of an application. This represents one particular @@ -598,6 +599,7 @@ public class Apk extends ValueObject implements Comparable, Parcelable { * @return true if this is an apk instead of a non-apk/media file */ public boolean isApk() { - return this.apkName == null || this.apkName.endsWith(".apk"); + return apkName == null + || apkName.substring(apkName.length() - 4).toLowerCase(Locale.ENGLISH).endsWith(".apk"); } }