使用下面的函数,我试图获取用户从其 Android 手机上的 Chrome 浏览器访问的最后一个 url。此功能适用于大多数网站,但不适用于“www.reddit.com”。
如果我转到“www.google.com”、“www.hulu.com”或“www.kayak.com”,下面的 url 变量会更新,但不会不更新 如果我去“www.reddit.com”。
如果我访问“m.reddit.com”,它确实会更新。 facebook 也有同样的问题,检测到 m.facebook.com 但没有检测到 www.facebook.com。
我不明白“www.reddit.com”和“m.reddit.com”有什么区别,Android 只记录一个而不记录另一个。
我需要对代码进行哪些更改来检测所有 URL 访问?
public String returnLastChromeURL(int browserCode) {
String[] proj = new String[] { Browser.BookmarkColumns.DATE,
Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL };
String dateTime;
Uri uriCustom = Uri
.parse("content://com.android.chrome.browser/bookmarks");
String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history,
// 1 = bookmark
try {
Cursor mCur = mContext.getContentResolver().query(uriCustom, proj, sel,
null, BookmarkColumns.DATE + " ASC");
mCur.moveToFirst();
mCur.moveToLast();
dateTime = mCur.getString(mCur
.getColumnIndex(Browser.BookmarkColumns.DATE));
title = mCur.getString(mCur
.getColumnIndex(Browser.BookmarkColumns.TITLE));
url = mCur.getString(mCur
.getColumnIndex(Browser.BookmarkColumns.URL));
mCur.close();
} catch (Exception e) {
dateTime = String.valueOf(System.currentTimeMillis());
title = "";
url = "empty_list";
}
return url;
}
来 self 的调试的更多信息:
www.reddit.com 这样的网站都可以检测到)。在真机上 www.reddit.com 不会被检测到。www.kayak.com'(重定向到www.kayak.com/mn),www.hulu.com (加载网站的移动版本,但网址仍为 www.hulu.com),www.google.com`(与 hulu 的故事相同)。加载纯桌面版网站的网站似乎没有被检测到
最佳答案
这是因为您从未在手机上访问过桌面域,实际上每次您在手机上访问 facebook(或任何其他检测到您的导航器的网站)时,它都会自动将您重定向到移动网站,不会保存重定向在历史中,除非页面加载,这永远不会发生。
查看以下截取 self 真正的 N7100 Galaxy Note2 和我的 Windows 浏览器的屏幕截图:
如果您使用的是 chrome 浏览器,您可以请求桌面网站(这不是一个可靠的解决方案,因为用户必须手动执行此操作)。
另一种解决方案是覆盖由于 XSS 而无法工作的重定向方法 政策。
所以更好的解决方案是伪造您的浏览器并让服务器相信您使用的是桌面浏览器检查此 answer .
桌面上的模拟器使用设备用户代理,这将被视为桌面浏览器。
关于Android 浏览历史仅遗漏了一些网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776302/
我正在尝试在Ruby中制作一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键浏览它。我觉得我已经在Ruby中看到一个库已经这样做了,但我记不起它的名字了。我正在尝试对soundcloud2000中的代码进行逆向工程做类似的事情,但他的代码与SoundcloudAPI的使用紧密耦合。我知道cursesgem,我正在考虑更抽象的东西。广告有没有人见过可以做到这一点的库或一些概念证明的Ruby代码可以做到这一点? 最佳答案 我不知道这是否是您正在寻找的,但也许您可以使用我的想法。由于我没有关于您要完成的工作
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
在Ruby中可以使用哪些替代方法来ping一个ip地址?标准库“ping”库的功能似乎非常有限。我对在这里滚动我自己的代码不感兴趣。有没有好的gem?我应该接受它并忍受它吗?(我在Linux上使用Ruby1.8.6编写代码) 最佳答案 net-ping值得一看。它允许TCPping(如标准rubyping),但也允许UDP、HTTP和ICMPping。ICMPping需要root权限,但其他则不需要。 关于ruby-Pingruby网站?,我们在StackOverflow上找到一个类
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我想找到在某些文本中找到一些(让它是两个)句子的好方法。什么会更好-使用正则表达式或拆分方法?你的想法?应JeremyStein的要求-有一些例子示例:输入:ThefirstthingtodoistocreatetheCommentmodel.We’llcreatethisinthenormalway,butwithonesmalldifference.IfwewerejustcreatingcommentsforanArticlewe’dhaveanintegerfieldcalledarticle_idinthemodeltostoretheforeignkey,butinthis
我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT
我正在使用ruby1.8.7。p=lambda{return10;}deflab(block)puts'before'putsblock.callputs'after'endlabp以上代码输出为before10after我将相同的代码重构到这里deflab(&block)puts'before'putsblock.callputs'after'endlab{return10;}现在我收到LocalJumpError:意外返回。对我来说,这两个代码都在做同样的事情。是的,在第一种情况下我传递了一个过程,在第二种情况下我传递了一个block。但是&block将该block转换为pro
使用ruby的watir测试网络应用程序时,浏览器最后会保持打开状态。网上的一些建议是,要进行真正的单元测试,您应该在每次测试时(在拆卸调用中)打开和关闭浏览器,但这很慢而且毫无意义。或者他们做这样的事情:defself.suites=superdefs.afterClass#Closebrowserenddefs.run(*args)superafterClassendsend但这会导致摘要输出不再显示(诸如“100次测试、100次断言、0次失败、0次错误”之类的内容仍应显示)。我怎样才能让ruby或watir在我的测试结束时关闭浏览器? 最佳答案