Question

I started exploring BeanShell for SL4A because I read that it could access the entire Android API. This would facilitate experimenting with API features and programming ideas without the need for a computer or compilation.

However, much of the API is accessed through a Context, and I don't know how to obtain this. Although both SL4A and BeanShell are well-documented, the combination of the two seems to be very poorly documented.

For example, to access android.net.ConnectivityManager, the developer reference states that I need to call Context.getSystemService(Context.CONNECTIVITY_SERVICE) to get an instance. But without a context, I don't think I'm able to access the methods of the ConnectivityManager.

So how do I obtain the Context?

Was it helpful?

Solution

Dahrrr…

While researching and formulating the question, I found out that this is an unresolved issue:

Notes for Java interpreters

Beanshell and Rhino can both directly access the android api. However, many Android api calls required a context, which, due to the way they are run, these interpreters don't have. A solution is being sought... suggestions appreciated.

OTHER TIPS

I don't know sl4a or beanshell but i know Rhino. So i suppose that you can create scriptable objects too. If this is correct you can do something like this (in java):

// first create a simple scope called -> scope


// inject context.
 Object injectObject = Context.javaToJS(android_context, scope);    // ('Context' of rhino library)
 ScriptableObject.putProperty(scope, "android_context_name", injectObject);

// so then execute your script with the injected object
 execute(javascript_context, host, scope, scriptId, source, settings);

When you finish injected the the context you can access him via: "android_context_name". (inside your script).

When you run your bean shell script, it will be thru an android app ?

There are such available

e.g : BeanShell Executor, that will allow you to run a script.

So I assume the context will be passed from the app to the script being executed.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top