Implement AWT (1.12.2-) link opening

TODO: DIrectory opening
This commit is contained in:
artdeell 2023-01-27 07:33:52 +03:00
parent 6714813eec
commit 33d7d854ae
4 changed files with 49 additions and 1 deletions

View File

@ -1 +1 @@
HEllo People
HEllo PeoplE

View File

@ -17,6 +17,7 @@ import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.*;
import android.provider.DocumentsContract;
import android.util.*;
import android.view.*;
import android.widget.*;
@ -519,6 +520,18 @@ public class MainActivity extends BaseActivity implements ControlButtonMenuListe
}
});
}
public static void openPath(String path) {
Context ctx = touchpad.getContext(); // no more better way to obtain a context statically
((Activity)ctx).runOnUiThread(() -> {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(DocumentsContract.buildDocumentUri(ctx.getString(R.string.storageProviderAuthorities), path), "*/*");
ctx.startActivity(intent);
} catch (Throwable th) {
Tools.showError(ctx, th);
}
});
}
@Override
public void onClickedMenu() {

View File

@ -1,5 +1,7 @@
#include <jni.h>
#include <assert.h>
#include <string.h>
#include <stdio.h>
static JavaVM* dalvikJavaVMPtr;
@ -13,6 +15,10 @@ jmethodID method_GetRGB;
jclass class_CTCAndroidInput;
jmethodID method_ReceiveInput;
jclass class_MainActivity;
jmethodID method_OpenLink;
jmethodID method_OpenPath;
jclass class_Frame;
jclass class_Rectangle;
jmethodID constructor_Rectangle;
@ -26,6 +32,11 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
if (dalvikJavaVMPtr == NULL) {
//Save dalvik global JavaVM pointer
dalvikJavaVMPtr = vm;
JNIEnv *env = NULL;
(*vm)->GetEnv(vm, (void**)&env, JNI_VERSION_1_4);
class_MainActivity = (*env)->NewGlobalRef(env,(*env)->FindClass(env, "net/kdt/pojavlaunch/MainActivity"));
method_OpenLink= (*env)->GetStaticMethodID(env, class_MainActivity, "openLink", "(Ljava/lang/String;)V");
method_OpenPath= (*env)->GetStaticMethodID(env, class_MainActivity, "openLink", "(Ljava/lang/String;)V");
} else if (dalvikJavaVMPtr != vm) {
runtimeJavaVMPtr = vm;
}
@ -136,6 +147,30 @@ Java_net_kdt_pojavlaunch_AWTInputBridge_nativePutClipboard(JNIEnv *env, jclass c
(*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,o_stringSelection);
}
JNIEXPORT void JNICALL Java_net_java_openjdk_cacio_ctc_CTCDesktopPeer_openFile(JNIEnv *env, jclass clazz, jstring filePath) {
JNIEnv *dalvikEnv;char detachable = 0;
if((*dalvikJavaVMPtr)->GetEnv(dalvikJavaVMPtr, (void **) &dalvikEnv, JNI_VERSION_1_6) == JNI_EDETACHED) {
(*dalvikJavaVMPtr)->AttachCurrentThread(dalvikJavaVMPtr, &dalvikEnv, NULL);
detachable = 1;
}
const char* stringChars = (*env)->GetStringUTFChars(env, filePath, NULL);
(*dalvikEnv)->CallStaticVoidMethod(dalvikEnv, class_MainActivity, method_OpenPath, (*dalvikEnv)->NewStringUTF(dalvikEnv, stringChars));
(*env)->ReleaseStringUTFChars(env, filePath, stringChars);
if(detachable) (*dalvikJavaVMPtr)->DetachCurrentThread(dalvikJavaVMPtr);
}
JNIEXPORT void JNICALL Java_net_java_openjdk_cacio_ctc_CTCDesktopPeer_openUri(JNIEnv *env, jclass clazz, jstring uri) {
JNIEnv *dalvikEnv;char detachable = 0;
if((*dalvikJavaVMPtr)->GetEnv(dalvikJavaVMPtr, (void **) &dalvikEnv, JNI_VERSION_1_6) == JNI_EDETACHED) {
(*dalvikJavaVMPtr)->AttachCurrentThread(dalvikJavaVMPtr, &dalvikEnv, NULL);
detachable = 1;
}
const char* stringChars = (*env)->GetStringUTFChars(env, uri, NULL);
(*dalvikEnv)->CallStaticVoidMethod(dalvikEnv, class_MainActivity, method_OpenLink, (*dalvikEnv)->NewStringUTF(dalvikEnv, stringChars));
(*env)->ReleaseStringUTFChars(env, uri, stringChars);
if(detachable) (*dalvikJavaVMPtr)->DetachCurrentThread(dalvikJavaVMPtr);
}
JNIEXPORT void JNICALL
Java_net_kdt_pojavlaunch_AWTInputBridge_nativeMoveWindow(JNIEnv *env, jclass clazz, jint xoff, jint yoff) {
if (runtimeJNIEnvPtr_INPUT == NULL) {