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) {
|
private static void addCommonEnv(FCLConfig config, HashMap<String, String> envMap) {
|
||||||
envMap.put("HOME", config.getLogDir());
|
envMap.put("HOME", config.getLogDir());
|
||||||
envMap.put("JAVA_HOME", config.getJavaPath());
|
envMap.put("JAVA_HOME", config.getJavaPath());
|
||||||
|
envMap.put("FCL_NATIVEDIR",config.getContext().getApplicationInfo().nativeLibraryDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addRendererEnv(FCLConfig config, HashMap<String, String> envMap) {
|
private static void addRendererEnv(FCLConfig config, HashMap<String, String> envMap) {
|
||||||
|
|
|
@ -1,15 +1,22 @@
|
||||||
package com.tungsten.fclauncher.bridge;
|
package com.tungsten.fclauncher.bridge;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
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.view.Surface;
|
||||||
|
import android.webkit.MimeTypeMap;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.tungsten.fclauncher.FCLPath;
|
import com.tungsten.fclauncher.FCLPath;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
public class FCLBridge implements Serializable {
|
public class FCLBridge implements Serializable {
|
||||||
|
@ -66,6 +73,7 @@ public class FCLBridge implements Serializable {
|
||||||
System.loadLibrary("xhook");
|
System.loadLibrary("xhook");
|
||||||
System.loadLibrary("fcl");
|
System.loadLibrary("fcl");
|
||||||
System.loadLibrary("glfw");
|
System.loadLibrary("glfw");
|
||||||
|
System.loadLibrary("fcl_awt");
|
||||||
}
|
}
|
||||||
|
|
||||||
public FCLBridge() {
|
public FCLBridge() {
|
||||||
|
@ -175,6 +183,26 @@ public class FCLBridge implements Serializable {
|
||||||
return item.getText().toString();
|
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) {
|
public void setScaleFactor(double scaleFactor) {
|
||||||
this.scaleFactor = scaleFactor;
|
this.scaleFactor = scaleFactor;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,6 +80,11 @@ LOCAL_SHARED_LIBRARIES := awt_headless
|
||||||
LOCAL_SRC_FILES := awt_xawt/xawt_fake.c
|
LOCAL_SRC_FILES := awt_xawt/xawt_fake.c
|
||||||
include $(BUILD_SHARED_LIBRARY)
|
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)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE := lwjgl2
|
LOCAL_MODULE := lwjgl2
|
||||||
LOCAL_SHARED_LIBRARIES := fcl
|
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