mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-18 17:15:40 -04:00
Implement AWT (1.12.2-) link opening
TODO: DIrectory opening
This commit is contained in:
parent
6714813eec
commit
33d7d854ae
Binary file not shown.
@ -1 +1 @@
|
|||||||
HEllo People
|
HEllo PeoplE
|
@ -17,6 +17,7 @@ import android.content.res.Configuration;
|
|||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.os.*;
|
import android.os.*;
|
||||||
|
import android.provider.DocumentsContract;
|
||||||
import android.util.*;
|
import android.util.*;
|
||||||
import android.view.*;
|
import android.view.*;
|
||||||
import android.widget.*;
|
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
|
@Override
|
||||||
public void onClickedMenu() {
|
public void onClickedMenu() {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
static JavaVM* dalvikJavaVMPtr;
|
static JavaVM* dalvikJavaVMPtr;
|
||||||
|
|
||||||
@ -13,6 +15,10 @@ jmethodID method_GetRGB;
|
|||||||
jclass class_CTCAndroidInput;
|
jclass class_CTCAndroidInput;
|
||||||
jmethodID method_ReceiveInput;
|
jmethodID method_ReceiveInput;
|
||||||
|
|
||||||
|
jclass class_MainActivity;
|
||||||
|
jmethodID method_OpenLink;
|
||||||
|
jmethodID method_OpenPath;
|
||||||
|
|
||||||
jclass class_Frame;
|
jclass class_Frame;
|
||||||
jclass class_Rectangle;
|
jclass class_Rectangle;
|
||||||
jmethodID constructor_Rectangle;
|
jmethodID constructor_Rectangle;
|
||||||
@ -26,6 +32,11 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
|
|||||||
if (dalvikJavaVMPtr == NULL) {
|
if (dalvikJavaVMPtr == NULL) {
|
||||||
//Save dalvik global JavaVM pointer
|
//Save dalvik global JavaVM pointer
|
||||||
dalvikJavaVMPtr = vm;
|
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) {
|
} else if (dalvikJavaVMPtr != vm) {
|
||||||
runtimeJavaVMPtr = vm;
|
runtimeJavaVMPtr = vm;
|
||||||
}
|
}
|
||||||
@ -136,6 +147,30 @@ Java_net_kdt_pojavlaunch_AWTInputBridge_nativePutClipboard(JNIEnv *env, jclass c
|
|||||||
(*runtimeJNIEnvPtr_CLIPBOARD)->DeleteLocalRef(runtimeJNIEnvPtr_CLIPBOARD,o_stringSelection);
|
(*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
|
JNIEXPORT void JNICALL
|
||||||
Java_net_kdt_pojavlaunch_AWTInputBridge_nativeMoveWindow(JNIEnv *env, jclass clazz, jint xoff, jint yoff) {
|
Java_net_kdt_pojavlaunch_AWTInputBridge_nativeMoveWindow(JNIEnv *env, jclass clazz, jint xoff, jint yoff) {
|
||||||
if (runtimeJNIEnvPtr_INPUT == NULL) {
|
if (runtimeJNIEnvPtr_INPUT == NULL) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user