From e7318f075703fa49ea2c5a3f7fcfa38b45e4ea39 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Sun, 31 Aug 2025 11:10:40 +0200 Subject: [PATCH] fixes for NewPipe version 0.28.0 --- src/api-impl-jni/util.c | 2 ++ src/api-impl/android/app/Activity.java | 2 -- src/api-impl/android/content/Context.java | 9 +++++++-- src/api-impl/android/content/Intent.java | 2 +- src/api-impl/android/content/pm/PackageManager.java | 6 +++--- src/api-impl/android/text/BidiFormatter.java | 12 ++++++++++++ src/api-impl/android/text/format/DateUtils.java | 8 ++++---- src/api-impl/meson.build | 1 + 8 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 src/api-impl/android/text/BidiFormatter.java diff --git a/src/api-impl-jni/util.c b/src/api-impl-jni/util.c index aa7e9253..6d7da275 100644 --- a/src/api-impl-jni/util.c +++ b/src/api-impl-jni/util.c @@ -243,6 +243,8 @@ void atl_safe_gtk_widget_queue_resize(GtkWidget *widget) } GVariant *intent_serialize(JNIEnv *env, jobject intent) { + if (!intent) + return NULL; jstring action_jstr = _GET_OBJ_FIELD(intent, "action", "Ljava/lang/String;"); jobject component = _GET_OBJ_FIELD(intent, "component", "Landroid/content/ComponentName;"); jstring className_jstr = component ? _GET_OBJ_FIELD(component, "mClass", "Ljava/lang/String;") : NULL; diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java index 62f739f5..a29cb755 100644 --- a/src/api-impl/android/app/Activity.java +++ b/src/api-impl/android/app/Activity.java @@ -512,8 +512,6 @@ public class Activity extends ContextThemeWrapper implements Window.Callback, La this.intent = newIntent; } - public void unregisterReceiver(BroadcastReceiver receiver) {} - public Intent getParentActivityIntent() { return null; } diff --git a/src/api-impl/android/content/Context.java b/src/api-impl/android/content/Context.java index d0796eb0..d324a740 100644 --- a/src/api-impl/android/content/Context.java +++ b/src/api-impl/android/content/Context.java @@ -64,6 +64,7 @@ import java.security.Provider; import java.security.Security; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; public class Context extends Object { private final static String TAG = "Context"; @@ -99,7 +100,7 @@ public class Context extends Object { File cache_dir = null; File nobackup_dir = null; - private static Map receiverMap = new HashMap(); + private static Map receiverMap = new ConcurrentHashMap(); static { assets = new AssetManager(); @@ -265,6 +266,8 @@ public class Context extends Object { } public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { + if (receiver == null) + return null; receiverMap.put(filter, receiver); return new Intent(); } @@ -714,7 +717,9 @@ public class Context extends Object { public void unbindService(ServiceConnection serviceConnection) {} - public void unregisterReceiver(BroadcastReceiver receiver) {} + public void unregisterReceiver(BroadcastReceiver receiver) { + while (receiverMap.values().remove(receiver)); + } public Context createPackageContext(String dummy, int dummy2) { return this; // FIXME? diff --git a/src/api-impl/android/content/Intent.java b/src/api-impl/android/content/Intent.java index 6e50fc3b..abe5c3ba 100644 --- a/src/api-impl/android/content/Intent.java +++ b/src/api-impl/android/content/Intent.java @@ -234,7 +234,7 @@ public class Intent implements Parcelable { } public boolean getBooleanExtra(String name, boolean defaultValue) { - return defaultValue; + return extras.getBoolean(name, defaultValue); } public Intent setAction(String action) { diff --git a/src/api-impl/android/content/pm/PackageManager.java b/src/api-impl/android/content/pm/PackageManager.java index 85574934..674135bd 100644 --- a/src/api-impl/android/content/pm/PackageManager.java +++ b/src/api-impl/android/content/pm/PackageManager.java @@ -1388,13 +1388,13 @@ public class PackageManager { public PackageInfo getPackageInfo(String packageName, int flags) throws NameNotFoundException { if (packageName.equals(Context.pkg.packageName)) { return PackageParser.generatePackageInfo(Context.pkg, new int[0], flags, 0, 0, new HashSet<>(), new PackageUserState()); - } else if (packageName.equals("atl")) { + } else if (packageName.equals("atl") || packageName.equals("android")) { PackageInfo info = new PackageInfo(); info.packageName = packageName; - info.signatures = new Signature[0]; + info.signatures = new Signature[] { new Signature(new byte[0]) }; return info; } else { - throw new NameNotFoundException(); + throw new NameNotFoundException(packageName); } } diff --git a/src/api-impl/android/text/BidiFormatter.java b/src/api-impl/android/text/BidiFormatter.java new file mode 100644 index 00000000..bd945c83 --- /dev/null +++ b/src/api-impl/android/text/BidiFormatter.java @@ -0,0 +1,12 @@ +package android.text; + +public class BidiFormatter { + + public static BidiFormatter getInstance() { + return new BidiFormatter(); + } + + public String unicodeWrap(String source) { + return source; + } +} diff --git a/src/api-impl/android/text/format/DateUtils.java b/src/api-impl/android/text/format/DateUtils.java index 8152fc0e..4accf87a 100644 --- a/src/api-impl/android/text/format/DateUtils.java +++ b/src/api-impl/android/text/format/DateUtils.java @@ -18,10 +18,10 @@ public class DateUtils { } public static String formatElapsedTime(long elapsedMillis) { - final long days = elapsedMillis / (24 * 60 * 60L); - final long hours = elapsedMillis / (60 * 60L) % 24L; - final long minutes = elapsedMillis / 60L % 60L; - final long seconds = elapsedMillis % 60L; + final long days = elapsedMillis / (24 * 60 * 60L * 1000L); + final long hours = elapsedMillis / (60 * 60L * 1000L) % 24L; + final long minutes = elapsedMillis / (60L * 1000L) % 60L; + final long seconds = elapsedMillis / 1000L % 60L; if (elapsedMillis < 0) { return "0:00"; diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build index 32c210e8..4efaaeec 100644 --- a/src/api-impl/meson.build +++ b/src/api-impl/meson.build @@ -389,6 +389,7 @@ srcs = [ 'android/telephony/SubscriptionManager.java', 'android/telephony/TelephonyManager.java', 'android/text/AutoText.java', + 'android/text/BidiFormatter.java', 'android/text/BoringLayout.java', 'android/text/ClipboardManager.java', 'android/text/Editable.java',