fix open link for 1.13-
This commit is contained in:
parent
d4695e8205
commit
ee0723953b
Binary file not shown.
Binary file not shown.
|
@ -1 +1 @@
|
|||
1
|
||||
2
|
|
@ -124,6 +124,7 @@ public class FCLauncher {
|
|||
private static void addCommonEnv(FCLConfig config, HashMap<String, String> envMap) {
|
||||
envMap.put("HOME", config.getLogDir());
|
||||
envMap.put("JAVA_HOME", config.getJavaPath());
|
||||
envMap.put("FCL_NATIVEDIR",config.getContext().getApplicationInfo().nativeLibraryDir);
|
||||
}
|
||||
|
||||
private static void addRendererEnv(FCLConfig config, HashMap<String, String> envMap) {
|
||||
|
|
|
@ -1,15 +1,22 @@
|
|||
package com.tungsten.fclauncher.bridge;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.provider.DocumentsContract;
|
||||
import android.util.Log;
|
||||
import android.view.Surface;
|
||||
import android.webkit.MimeTypeMap;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.tungsten.fclauncher.FCLPath;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.Serializable;
|
||||
|
||||
public class FCLBridge implements Serializable {
|
||||
|
@ -66,6 +73,7 @@ public class FCLBridge implements Serializable {
|
|||
System.loadLibrary("xhook");
|
||||
System.loadLibrary("fcl");
|
||||
System.loadLibrary("glfw");
|
||||
System.loadLibrary("fcl_awt");
|
||||
}
|
||||
|
||||
public FCLBridge() {
|
||||
|
@ -175,6 +183,26 @@ public class FCLBridge implements Serializable {
|
|||
return item.getText().toString();
|
||||
}
|
||||
|
||||
public static void openLink(final String link) {
|
||||
Context ctx = FCLPath.CONTEXT;
|
||||
((Activity)ctx).runOnUiThread(() -> {
|
||||
try {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
String targetLink = link;
|
||||
if(targetLink.startsWith("file:")) {
|
||||
targetLink = targetLink.replace("file:","");
|
||||
if(targetLink.startsWith("//")) {
|
||||
targetLink = targetLink.replace("//","/");
|
||||
}
|
||||
}
|
||||
intent.setDataAndType(Uri.parse(targetLink), "*/*");
|
||||
ctx.startActivity(intent);
|
||||
} catch (Exception e) {
|
||||
Log.e("openLink error",e.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setScaleFactor(double scaleFactor) {
|
||||
this.scaleFactor = scaleFactor;
|
||||
}
|
||||
|
|
|
@ -80,6 +80,11 @@ LOCAL_SHARED_LIBRARIES := awt_headless
|
|||
LOCAL_SRC_FILES := awt_xawt/xawt_fake.c
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := fcl_awt
|
||||
LOCAL_SRC_FILES := awt/awt_bridge.c
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := lwjgl2
|
||||
LOCAL_SHARED_LIBRARIES := fcl
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
#include <jni.h>
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
static JavaVM* dalvikJavaVMPtr;
|
||||
|
||||
static JavaVM* runtimeJavaVMPtr;
|
||||
|
||||
jclass class_MainActivity;
|
||||
jmethodID method_OpenLink;
|
||||
jmethodID method_OpenPath;
|
||||
|
||||
jint JNI_OnLoad(JavaVM* vm, void* reserved) {
|
||||
if (dalvikJavaVMPtr == NULL) {
|
||||
dalvikJavaVMPtr = vm;
|
||||
JNIEnv *env = NULL;
|
||||
(*vm)->GetEnv(vm, (void**)&env, JNI_VERSION_1_4);
|
||||
class_MainActivity = (*env)->NewGlobalRef(env,(*env)->FindClass(env, "com/tungsten/fclauncher/bridge/FCLBridge"));
|
||||
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;
|
||||
}
|
||||
|
||||
return JNI_VERSION_1_4;
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
}
|
Loading…
Reference in New Issue