Я не знаю, можете ли вы напрямую запустить javascript-код, но вы можете запустить его в веб-просмотре (возможно, скрытом?) И перехватить вызовы javascript с помощью интерфейса javascript, в сочетании с инъекцией в веб-представление, я думаю вы должны иметь возможность делать почти все, что хотите. Если вам это нужно, вы также можете загрузить источник js, проанализировать его по своему усмотрению и затем подать в веб-представление. Если вы хотите больше информации, дайте мне знать ^^
полотно полно, например в любом случае, здесь example и another one
EDIT
нормально вам не нужно на самом деле запустить этот JavaScript, разбор его достаточно, вот рабочий пример в андроиде, реализующий @TS метод parsing, для его запуска вам просто нужно добавить android.permission.INTERNET
в файл манифеста и иметь текстовое представление с установленным идентификатором myTextView.
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;
}
}
Отправлено редактировать android код! – lelloman