#android #disqus
#Android #disqus
Вопрос:
Я создал приложение с помощью следующих ссылок, но когда я захожу в Disqus для ввода комментария, мне нужно обновить страницу, только тогда она показывает, что я вошел в систему, и тогда я могу ввести комментарий. Я использую фрагмент HTML, а не php. Ссылки, на которые я ссылаюсь, следующие:-
http://globeotter.com/blog/disqus-android-code/
http://globeotter.com/blog/disqus-login-and-logout/
Мой код приведен ниже:-
Public class MainActivity extends Activity {
WebView webDisqus;
String sMyurl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String htmlComments = getHtmlComment("<MyWEBSITE_Disqus_ID>", "<MYWEBSITE_SHORTNAME>");
sMyurl="MYWEBSITES_URL";
webDisqus = (WebView) findViewById(R.id.disqus);
// set up disqus
WebSettings webSettings2 = webDisqus.getSettings();
webSettings2.setJavaScriptEnabled(true);
webSettings2.setBuiltInZoomControls(true);
webDisqus.requestFocusFromTouch();
webDisqus.setWebViewClient(new MyWebViewClient(htmlComments, "text/html", null, sMyurl));
webDisqus.setWebChromeClient(new WebChromeClient());
webDisqus.loadData(htmlComments, "text/html", null);
}
public String getHtmlComment(String idPost, String shortName) {
return "<div id='disqus_thread'></div>"
"<script type='text/javascript'>"
"var disqus_identifier = '"
idPost
"';"
"var disqus_shortname = '"
shortName
"';"
" (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;"
"dsq.src = 'http://' disqus_shortname '.disqus.com/embed.js';"
"(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })();"
"</script>";
}
}
И класс MyWebView выглядит следующим образом:-
`
public class MyWebViewClient extends WebViewClient {`
private String html_comments, sType, obj, sMyURL;
public MyWebViewClient(String htmlComments, String string, String object, String URL) {
// TODO Auto-generated constructor stub
html_comments=htmlComments;
sType=string;
obj=object;
sMyURL=URL;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i("page started", url);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.i("disqus error", "failed: " failingUrl ", error code: " errorCode " [" description "]");
}
public void onPageFinished(WebView view, String url) {
if(url.indexOf("logout")>-1 || url.indexOf("disqus.com/next/login-success")>-1 ){
view.loadData(html_comments, sType, obj);
}
if(url.indexOf("disqus.com/_ax/twitter/complete")>-1||url.indexOf("disqus.com/_ax/facebook/complete")>-1||url.indexOf("disqus.com/_ax/google/complete")>-1){
view.loadData(html_comments, sType, obj);
}
if(url.indexOf(sMyURL "/login.php")>-1){
view.loadData(html_comments,sType, obj);
}
}
}`
Может кто-нибудь сказать мне, что мне делать, чтобы не обновлять страницу всякий раз, когда я захожу в систему и выхожу из Disqus через WebView моей активности.
Ответ №1:
Приведенный выше код хорошо работает на устройствах Android. Проблема возникает только в том случае, если мы запускаем его на эмуляторе, так как эмулятор работает медленно по сравнению с устройствами…