我想复制 Instagram 视频的链接,其中用户单击加载到 android 网络视图中的资源,这与我为 Facebook 实现的相同,但它工作正常。我几乎搜索了两天,但我没有找到任何答案,如果有人知道请纠正我。
这是我的 Instagram 网络客户端代码。
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
urlString=url;
}
@Override
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:(function() { "
+ "var el = document.querySelectorAll('div[data-sigil]');"
+ "for(var i=0;i<el.length; i++)"
+ "{"
+ "var sigil = el[i].dataset.sigil;"
+ "if(sigil.indexOf('inlineVideo') > -1){"
+ "delete el[i].dataset.sigil;"
+ "var jsonData = JSON.parse(el[i].dataset.store);"
+ "el[i].setAttribute('onClick', 'IGDownloader.processVideod(\"'+jsonData['src']+'\");');"
+ "}" + "}" + "})()");
Log.e("WEBVIEWFIN", url);
progressBar.setVisibility(View.GONE);
super.onPageFinished(view, url);
}
@Override
public void onLoadResource(WebView view, String url) {
webView.loadUrl("javascript:(function prepareVideo() { "
+ "var el = document.querySelectorAll('div[data-sigil]');"
+ "for(var i=0;i<el.length; i++)"
+ "{"
+ "var sigil = el[i].dataset.sigil;"
+ "if(sigil.indexOf('inlineVideo') > -1){"
+ "delete el[i].dataset.sigil;"
+ "console.log(i);"
+ "var jsonData = JSON.parse(el[i].dataset.store);"
+ "el[i].setAttribute('onClick', 'IGDownloader.processVideod(\"'+jsonData['src']+'\",\"'+jsonData['videoID']+'\");');"
+ "}" + "}" + "})()");
webView.loadUrl("javascript:( window.onload=prepareVideo;"
+ ")()");
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view,String url) {
if(url.equals("http://stackoverflow.com/questions")){
Toast.makeText(InstagramView.this,"No url",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(InstagramView.this,temp,Toast.LENGTH_LONG).show();
}
return false;
}
});
CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.createInstance(this);
}
cookieManager.setAcceptCookie(true);
webView.loadUrl(instaURL);
}