I don't know if you can directly run javascript code, but you can run it within a webview (maybe a hidden one?) and intercept javascript calls with a javascript interface, in combination with injection into the webview I think you should be able to do almost everything you want.
If you'd need it, you could also download the js source, parse it as you wish and then feed it to the webview. If you want more info let me know ^^
the web is full of example anyway, here an example and another one
EDIT
ok you don't need to actually run that javascript, parsing it is enough, here a working example in android implementing @T.S. parsing method, to run it you just need to add android.permission.INTERNET
to your manifest file and having a textview with myTextView id set.
public class MainActivity extends Activity implements Runnable{
TextView myTextView;
public Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
String source = (String)msg.obj;
// The index of the item
int i = 0;
// We search the data-string from the start
int position1 = 0;
// While there are items found, continue
while(true) {
// Look for the pattern a[index]={json data};
String lookFor1 = "a[" + String.valueOf(i) + "]={";
String lookFor2 = "};";
position1 = source.indexOf(lookFor1, position1+1);
// Check if we have a match
if(position1 > -1) {
// Find the end of the match
int position2 = source.indexOf(lookFor2, position1);
// Get the result
String result = source.substring(position1 + lookFor1.length() - 1, position2 + 1);
// Increase the index an check if we can find a next item
i++;
// Print out this row, which is a JSON representation of the data you want
Log.e("res",result);
try {
JSONObject obj = new JSONObject(result);
String title = obj.getString("title");
String img = obj.getString("img");
String src = new JSONObject(img).getString("src");
myTextView.append("\ntitle: "+title+"\nimgurl: "+src+"\n");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
// We haven't found a match, break out of while loop
break;
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTextView = (TextView) findViewById(R.id.myTextView);
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
String data = retrieve_data();
Message msg = handler.obtainMessage();
msg.obj = data;
handler.sendMessage(msg);
}
private String retrieve_data(){
String data = "";
String url = "http://pulllist.comixology.com/js/pulllist/5b467b28e73595311e02fe32c3081e4a.js?date=2013-05-15";
HttpClient httpclient = new DefaultHttpClient();
HttpGet request;
try {
request = new HttpGet(new URI(url));
request.addHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0");
HttpResponse response = httpclient.execute(request);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
data = out.toString();
}
} catch (URISyntaxException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
}