api-impl: misc stubs and fixes for several apps including F-Droid and AuroraStore

This commit is contained in:
Julian Winkler
2025-03-25 19:24:06 +01:00
parent 7b0341123b
commit 4a4b4a4722
36 changed files with 296 additions and 27 deletions

View File

@@ -245,6 +245,8 @@ public class Context extends Object {
}
public final Object getSystemService(Class<?> serviceClass) throws InstantiationException, IllegalAccessException, InvocationTargetException {
if (serviceClass == LayoutInflater.class)
return layout_inflater;
return serviceClass.getConstructors()[0].newInstance();
}
@@ -706,4 +708,13 @@ public class Context extends Object {
public Drawable getWallpaper() {
return null;
}
public String[] databaseList() {
File databaseDir = new File(getDataDirFile(), "databases");
if (databaseDir.exists()) {
return databaseDir.list();
} else {
return new String[0];
}
}
}

View File

@@ -1,8 +1,13 @@
package android.content;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.AttributeSet;
import org.xmlpull.v1.XmlPullParser;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
@@ -378,4 +383,12 @@ public class Intent implements Parcelable {
public int filterHashCode() {
return 0;
}
public static Intent parseIntent(Resources res, XmlPullParser parser, AttributeSet attrs) {
return new Intent();
}
public ComponentName resolveActivity(PackageManager pm) {
return component;
}
}

View File

@@ -0,0 +1,11 @@
package android.content.pm;
import java.util.Collections;
import java.util.List;
public class PackageInstaller {
public List getMySessions() {
return Collections.emptyList();
}
}

View File

@@ -1385,7 +1385,11 @@ public class PackageManager {
* @see #GET_UNINSTALLED_PACKAGES
*/
public PackageInfo getPackageInfo(String packageName, int flags) throws NameNotFoundException {
return PackageParser.generatePackageInfo(Context.pkg, new int[0], flags, 0, 0, new HashSet<>(), new PackageUserState());
if (packageName.equals(Context.pkg.packageName)) {
return PackageParser.generatePackageInfo(Context.pkg, new int[0], flags, 0, 0, new HashSet<>(), new PackageUserState());
} else {
throw new NameNotFoundException();
}
}
/**
@@ -1820,15 +1824,15 @@ public class PackageManager {
* @see #PERMISSION_DENIED
*/
public int checkPermission(String permName, String pkgName) {
if (permName != null && permName.endsWith(".DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"))
return PERMISSION_GRANTED;
switch (permName) {
// TODO: we shouldn't just automatically grant these once we have bubblewrap set up
// for now, the app can access anything it wants, so no point telling it otherwise
case "android.permission.WRITE_EXTERNAL_STORAGE":
case "android.permission.READ_EXTERNAL_STORAGE":
case "com.google.android.c2dm.permission.SEND":
case "com.fsck.k9.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION":
case "net.thunderbird.android.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION":
case "de.danoeh.antennapod.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION":
return PERMISSION_GRANTED;
default:
System.out.println("PackageManager.checkPermission: >" + permName + "< not handled\n");
@@ -2094,7 +2098,7 @@ public class PackageManager {
* that are available on the system, or null if there are none(!!).
*/
public FeatureInfo[] getSystemAvailableFeatures() {
return null;
return new FeatureInfo[0];
}
/**
@@ -3454,4 +3458,8 @@ public class PackageManager {
// TODO: This should be shared with Installer's knowledge of user directory
return Environment.getDataDirectory().toString() + "/user/" + userId + "/" + packageName;
}
public PackageInstaller getPackageInstaller() {
return new PackageInstaller();
}
}