implement URL opening using libportal

This commit is contained in:
Julian Winkler
2023-09-01 16:03:31 +02:00
parent 0461834be0
commit b35cbea099
8 changed files with 69 additions and 8 deletions

View File

@@ -296,6 +296,11 @@ public class Activity extends Context implements Window.Callback {
public void startActivity(Intent intent) {
System.out.println("startActivity(" + intent + ") called");
if (intent.getComponent() == null) {
System.out.println("starting extern activity with intent: " + intent);
nativeOpenURI(String.valueOf(intent.getData()));
return;
}
try {
Class<? extends Activity> cls = Class.forName(intent.getComponent().getClassName()).asSubclass(Activity.class);
Constructor<? extends Activity> constructor = cls.getConstructor();
@@ -336,6 +341,7 @@ public class Activity extends Context implements Window.Callback {
private native void nativeFinish(long native_window);
private static native void nativeStartActivity(Activity activity);
private static native void nativeOpenURI(String uri);
@Override
public void onContentChanged() {

View File

@@ -8,15 +8,30 @@ import java.io.Serializable;
public class Intent {
private ComponentName component;
private Bundle extras = new Bundle();
private String action;
private Uri data;
public Intent() {}
public Intent(Intent o) {}
public Intent(String action) {}
public Intent(String action, Uri uri) {}
public Intent(Intent o) {
this.action = o.action;
this.data = o.data;
this.extras = o.extras;
this.component = o.component;
}
public Intent(String action) {
this.action = action;
}
public Intent(String action, Uri uri) {
this.action = action;
this.data = uri;
}
public Intent(Context packageContext, Class<?> cls) {
setClass(packageContext, cls);
}
public Intent(String action, Uri uri, Context packageContext, Class<?> cls) {}
public Intent(String action, Uri uri, Context packageContext, Class<?> cls) {
this(action, uri);
setClass(packageContext, cls);
}
public Intent addFlags(int flags) {
return this; //??
@@ -159,7 +174,7 @@ public class Intent {
}
public Uri getData() {
return null;
return data;
}
public boolean getBooleanExtra(String name, boolean defaultValue) {
@@ -209,7 +224,11 @@ public class Intent {
@Override
public String toString() {
return "Intent [component=" + component + ", extras=" + extras + "]";
return "Intent [component=" + component + ", extras=" + extras + ", action=" + action + ", uri=" + data + "]";
}
public static Intent createChooser(Intent target, CharSequence title) {
return target;
}
}

View File

@@ -80,6 +80,7 @@ public class PackageItemInfo {
public PackageItemInfo() {
metaData = new Bundle();
packageName = "android";
}
public PackageItemInfo(PackageItemInfo orig) {

View File

@@ -2132,7 +2132,7 @@ public class PackageManager {
* @see #GET_RESOLVED_FILTER
*/
public ResolveInfo resolveActivity(Intent intent, int flags) {
return null;
return new ResolveInfo();
}
/**

View File

@@ -1,4 +1,5 @@
package android.content.pm;
public class ResolveInfo {
public ActivityInfo activityInfo = new ActivityInfo();
}

View File

@@ -1,8 +1,17 @@
package android.net;
import java.net.URI;
public class Uri {
private URI uri;
public static Uri parse(String s) {
return new Uri();
Uri ret = new Uri();
try {
ret.uri = URI.create(s);
} catch (IllegalArgumentException e) {
}
return ret;
}
public Builder buildUpon() {
@@ -14,4 +23,9 @@ public class Uri {
return this;
}
}
@Override
public String toString() {
return String.valueOf(uri);
}
}