Advertisement
Guest User

Untitled

a guest
Jul 16th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #include <jni.h>
  2. #include <string>
  3.  
  4. #include "JavaScriptCore/JavaScriptCore.h"
  5.  
  6. std::string JSStringToStdString(JSStringRef jsString) {
  7. size_t maxBufferSize = JSStringGetMaximumUTF8CStringSize(jsString);
  8. char* utf8Buffer = new char[maxBufferSize];
  9. size_t bytesWritten = JSStringGetUTF8CString(jsString, utf8Buffer, maxBufferSize);
  10. std::string utf_string = std::string(utf8Buffer, bytesWritten -1);
  11. delete [] utf8Buffer;
  12. return utf_string;
  13. }
  14.  
  15. extern "C" JNIEXPORT jstring
  16.  
  17. JNICALL
  18. Java_com_example_chungnguyen_testjsc_MainActivity_stringFromJNI(
  19. JNIEnv *env,
  20. jobject /* this */) {
  21.  
  22. JSContextGroupRef contextGroup = JSContextGroupCreate();
  23. JSGlobalContextRef globalContext = JSGlobalContextCreateInGroup(contextGroup, nullptr);
  24.  
  25. JSStringRef statement = JSStringCreateWithUTF8CString("function degToRad(value) { return (value * Math.PI) / 180; } ('90deg = ' + degToRad(90))");
  26.  
  27. JSValueRef retValue = JSEvaluateScript(globalContext, statement, nullptr, nullptr, 1,nullptr);
  28.  
  29. JSStringRef retString = JSValueToStringCopy(globalContext, retValue, nullptr);
  30.  
  31. std::string hello = JSStringToStdString(retString);
  32.  
  33. JSGlobalContextRelease(globalContext);
  34. JSContextGroupRelease(contextGroup);
  35. JSStringRelease(statement);
  36. JSStringRelease(retString);
  37.  
  38. return env->NewStringUTF(hello.c_str());
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement