rrk*_*lli 5 android javax.script
import android.widget.Toast;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public void bEqual(View v) throws ScriptException {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String value = inputText.getText().toString();
Toast.makeText(this,value,Toast.LENGTH_LONG).show();
try{
result = (double)engine.eval(value);
Toast.makeText(this,String.format("%f",result),Toast.LENGTH_SHORT).show();
}catch(Exception e){
Toast.makeText(this,"Exception Raised",Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
这其中有什么问题吗?执行此操作时应用程序正在退出。它没有显示任何错误,但应用程序正在关闭
最简单的方法是在 Android 中使用 Mozilla Rhino [1],因为 ScriptEngine 及其依赖项需要耗时的设置和头痛。
导入 ff:
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import android.util.Log;
Run Code Online (Sandbox Code Playgroud)
您在方法中某处放置的代码:
Context context = Context.enter(); //
context.setOptimizationLevel(-1); // this is required[2]
Scriptable scope = context.initStandardObjects();
Object result = context.evaluateString(scope, "18 > 17 and 18 < 100", "<cmd>", 1, null);
Log.d("your-tag-here", "" + result);
Run Code Online (Sandbox Code Playgroud)
将其添加到您的 gradle 依赖项中。
implementation group: 'org.mozilla', name: 'rhino', version: '1.7.10'
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
15532 次 |
| 最近记录: |