从浏览器获取重定向的URL - Android

时间:2013-05-03 07:47:48

标签: java android xml redirect browser

这是我的问题,我想从用户那里授权我的应用。 为此,api为我提供了OAuth 2.0过程

我有一个链接“A”,其中包含我的应用密钥和我的重定向链接

例如。 http://www.apiprovider?api-key=MY_API_KEY&redirect= REDIRECT_LINK

链接A在浏览器中打开时询问用户的用户名和密码并授权我的应用,成功授权后,用户将被重定向到REDIRECT_LINK

REDIRECT_LINK使用我需要存储在变量

中的密钥进行编码

例如。 https://www.twitter.com/some_profile key=Asc545AS454dS44as

我不希望用户访问重定向链接,我只想获取网址,然后关闭浏览器页面不应该打开< /强>

我已使用此代码在浏览器中打开链接

Intent httpIntent = new Intent(Intent.ACTION_VIEW);
            httpIntent.setData(Uri.parse("LINK_A"));
            startActivity(httpIntent); 

1 个答案:

答案 0 :(得分:1)

如果您在WebView中打开您的网页,您的应用可以通过shouldOverrideUrlLoading()回调来监听任何网址更改。

如果您想打开股票浏览器,可以启动定期轮询最新网址的服务:

String lastDate = "0";
…
String newDate = Long.toString(Calendar.getInstance().getTimeInMillis());
Cursor cursor = context.getContentResolver().query(
    Browser.BOOKMARKS_URI,
    Browser.HISTORY_PROJECTION,
    Browser.BookmarkColumns.DATE + " IS NOT NULL AND " + Browser.BookmarkColumns.DATE + " > ?",
    lastDate,
    Browser.BookmarkColumns.DATE + " DESC");
if (cursor.moveToNext()) {
    String url = cursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
}
cursor.close();

lastDate = newDate; // update the timestamp

当您发现url符合您预期的更改时,您可以切换到您的活动,并在您的应用内容中继续。

可以从最终用户的POV关闭浏览器,但它可能不礼貌。想象一下,例如她有5个打开的标签,其中包含重要信息,所有这些都被销毁了!

请注意,Chrome浏览器的此方法 can be used ,内容提供商略有不同: content://com.android.chrome.browser/bookmarks < / p>