implement passing a URI to open inside the application

Supported URI schemes will also be added to the .desktop file for --install

The URI is passed as named parameter --uri. This allows us to use unnamed parameters
for split APK apps in the future
This commit is contained in:
Julian Winkler
2024-10-05 22:12:14 +02:00
parent 1b46d728e3
commit a8ef5a533a
5 changed files with 74 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ import android.os.Bundle;
import android.content.res.Configuration;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.pm.PackageParser;
public class Application extends ContextWrapper {
public long native_window;
@@ -16,6 +17,21 @@ public class Application extends ContextWrapper {
return getString(pkg.applicationInfo.labelRes);
}
String get_supported_mime_types() {
String mimeTypes = "";
for (PackageParser.Activity activity: pkg.activities) {
for (PackageParser.IntentInfo intent: activity.intents) {
for (int i = 0; i < intent.countDataSchemes(); i++) {
String scheme = intent.getDataScheme(i);
// ignore http and https, as there is no way to only handle specific hosts in a .desktop file
if (!"http".equals(scheme) && !"https".equals(scheme))
mimeTypes += "x-scheme-handler/" + intent.getDataScheme(i) + ";";
}
}
}
return "".equals(mimeTypes) ? null : mimeTypes;
}
public interface ActivityLifecycleCallbacks {
void onActivityCreated(Activity activity, Bundle savedInstanceState);
void onActivityStarted(Activity activity);