此类是在Android下定义的:

public abstract class EGLObjectHandle {
    private final long mHandle;

    protected EGLObjectHandle(long handle) {
        mHandle = handle;
    }


    public long getNativeHandle() {
        return mHandle;
    }

}

并且
public class EGLContext extends EGLObjectHandle {
    private EGLContext(long handle) {
        super(handle);
    }

}

现在我的问题是我想用 handle 创建一个 EGLContext。 如何执行此操作?在使用以下功能之前,但在 PIE 上不再起作用
  private android.opengl.EGLContext createSharedEGLContextObj(long handle) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
    Class<?> classType =Class.forName("android.opengl.EGLContext");
    Class<?>[] types = new Class[] { long.class };
    Constructor constructor=classType.getDeclaredConstructor(types);
    constructor.setAccessible(true);
    Object object=constructor.newInstance(handle);
    return (android.opengl.EGLContext) object;
  }

我需要一个EGLContext,因为我需要将其传递给需要EGLContext参数的过程,例如:createEgl14( android.opengl.EGLContext sharedContext)

最佳答案

你几乎不能。根据Android Restrictions的介绍,他们仅将JNI和反射限制为SDK接口(interface)。

我认为您最后的选择是request a new feature,它们将把构造函数的可见性更改为public。

10-01 14:01