From 0b0cfed345c00f2b157a89d4d492e9d22844ac47 Mon Sep 17 00:00:00 2001 From: Mis012 Date: Sun, 29 Oct 2023 22:47:57 +0100 Subject: [PATCH] misc: fix stuff up to make SDL example work again it still behaves weirdly, should probably find some other example since I don't trust my own code. --- src/ARSCLib/com/reandroid/arsc/value/Entry.java | 2 +- src/api-impl-jni/android_content_res_AssetManager.c | 5 +++++ .../generated_headers/android_content_res_AssetManager.h | 8 -------- src/api-impl/android/app/Activity.java | 2 ++ src/api-impl/android/content/Context.java | 4 ++++ src/api-impl/android/content/res/AssetManager.java | 9 +++++++-- src/api-impl/android/hardware/SensorManager.java | 4 ++++ src/api-impl/android/provider/Settings.java | 2 ++ 8 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/ARSCLib/com/reandroid/arsc/value/Entry.java b/src/ARSCLib/com/reandroid/arsc/value/Entry.java index 5696e317..ca0fac25 100755 --- a/src/ARSCLib/com/reandroid/arsc/value/Entry.java +++ b/src/ARSCLib/com/reandroid/arsc/value/Entry.java @@ -217,7 +217,7 @@ public class Entry extends Block implements JSONConvert { public TypeBlock getTypeBlock(){ return getParent(TypeBlock.class); } - private String getPackageName(){ + public String getPackageName(){ PackageBlock packageBlock = getPackageBlock(); if(packageBlock!=null){ return packageBlock.getName(); diff --git a/src/api-impl-jni/android_content_res_AssetManager.c b/src/api-impl-jni/android_content_res_AssetManager.c index 7a95ecf4..2f57564d 100644 --- a/src/api-impl-jni/android_content_res_AssetManager.c +++ b/src/api-impl-jni/android_content_res_AssetManager.c @@ -15,6 +15,11 @@ char *get_app_data_dir(); JNIEXPORT jint JNICALL Java_android_content_res_AssetManager_openAsset(JNIEnv *env, jobject this, jstring _file_name, jint mode) { const char *file_name = _CSTRING(_file_name); + + /* handle absolute paths */ + if(file_name[0] == '/') + return open(file_name, O_CLOEXEC | O_RDWR); + char *app_data_dir = get_app_data_dir(); char *path = malloc(strlen(app_data_dir) + strlen(ASSET_DIR) + strlen(file_name) + 1); int fd; diff --git a/src/api-impl-jni/generated_headers/android_content_res_AssetManager.h b/src/api-impl-jni/generated_headers/android_content_res_AssetManager.h index 0056e58c..35ca2327 100644 --- a/src/api-impl-jni/generated_headers/android_content_res_AssetManager.h +++ b/src/api-impl-jni/generated_headers/android_content_res_AssetManager.h @@ -73,14 +73,6 @@ JNIEXPORT void JNICALL Java_android_content_res_AssetManager_setLocale JNIEXPORT jobjectArray JNICALL Java_android_content_res_AssetManager_getLocales (JNIEnv *, jobject); -/* - * Class: android_content_res_AssetManager - * Method: getResourcePackageName - * Signature: (I)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_android_content_res_AssetManager_getResourcePackageName - (JNIEnv *, jobject, jint); - /* * Class: android_content_res_AssetManager * Method: getResourceEntryName diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java index 9a5ddc75..e4af2fb7 100644 --- a/src/api-impl/android/app/Activity.java +++ b/src/api-impl/android/app/Activity.java @@ -390,5 +390,7 @@ public class Activity extends Context implements Window.Callback { finish(); } + public void setIntent(Intent newIntent) {} + public void unregisterReceiver(BroadcastReceiver receiver) {} } diff --git a/src/api-impl/android/content/Context.java b/src/api-impl/android/content/Context.java index 2230d4cb..03cb923b 100644 --- a/src/api-impl/android/content/Context.java +++ b/src/api-impl/android/content/Context.java @@ -443,4 +443,8 @@ public class Context extends Object { public void unbindService(ServiceConnection serviceConnection) {} public void unregisterReceiver(BroadcastReceiver receiver) {} + + public Context createPackageContext(String dummy, int dummy2) { + return this; // FIXME? + } } diff --git a/src/api-impl/android/content/res/AssetManager.java b/src/api-impl/android/content/res/AssetManager.java index 2628b9f6..627bb9f1 100644 --- a/src/api-impl/android/content/res/AssetManager.java +++ b/src/api-impl/android/content/res/AssetManager.java @@ -464,11 +464,14 @@ public final class AssetManager { throw new RuntimeException("Assetmanager has been closed"); } asset = openAsset(fileName, 0); + if (asset < 0) + throw new FileNotFoundException("Asset file: " + fileName + ", errno: " + asset); + FileDescriptor fd = new FileDescriptor(); fd.setInt$(asset); ParcelFileDescriptor pfd = new ParcelFileDescriptor(fd); if (pfd != null) { - AssetFileDescriptor afd = new AssetFileDescriptor(pfd, mOffsets[0], mOffsets[1]); + AssetFileDescriptor afd = new AssetFileDescriptor(pfd, 0, getAssetLength(asset)); afd.fileName = "/assets/" + fileName; return afd; } @@ -860,7 +863,9 @@ public final class AssetManager { /*package*/ /*native*/ final String getResourceName(int resid) { return tableBlockSearch(resid).pickOne().getName(); } - /*package*/ native final String getResourcePackageName(int resid); + /*package*/ /*native*/ final String getResourcePackageName(int resid) { + return tableBlockSearch(resid).pickOne().getPackageName(); + } /*package*/ /*native*/ final String getResourceTypeName(int resid) { return tableBlockSearch(resid).pickOne().getTypeName(); } diff --git a/src/api-impl/android/hardware/SensorManager.java b/src/api-impl/android/hardware/SensorManager.java index e10ceb5a..0f106cb4 100644 --- a/src/api-impl/android/hardware/SensorManager.java +++ b/src/api-impl/android/hardware/SensorManager.java @@ -31,4 +31,8 @@ public class SensorManager { return false; } } + + public void unregisterListener(final SensorEventListener listener, Sensor sensor) { + System.out.println("STUB: andoroid.hw.SensorManager.unregisterListener"); + } } diff --git a/src/api-impl/android/provider/Settings.java b/src/api-impl/android/provider/Settings.java index f625cf65..921d2b82 100644 --- a/src/api-impl/android/provider/Settings.java +++ b/src/api-impl/android/provider/Settings.java @@ -10,6 +10,8 @@ public class Settings { switch (key) { case "android_id": return "_totally_an_androidID"; // TODO: is this a good ID? :P + case "advertising_id": + return ""; default: java.lang.System.out.println("!!!! Settings$Secure.getString: unknown key: >" + key + "<"); return "NOTICEME";