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

标签 java android xml redirect browser

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

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

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

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

REDIRECT_LINK 使用我需要存储在变量中的 key 进行编码

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

我不想让用户访问重定向链接,我只是想获取 url 然后关闭浏览器页面应该打不开.

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

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

最佳答案

如果您在 WebView 中打开您的页面,您的应用程序可以使用 shouldOverrideUrlLoading() 监听任何 URL 更改回调。

如果您更喜欢打开股票浏览器,您可以启动一个服务,该服务会定期轮询最新的 URL:

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 符合您的预期更改时,您可以切换到您的 Activity 并在您的应用上下文中继续。

可以关闭浏览器,但从最终用户的角度来看可能不礼貌。想象一下,例如,她打开了 5 个包含重要信息的选项卡,而所有这些都被销毁了!

注意这个方法 can be used 对于 Chrome 浏览器,内容提供者略有不同:content://com.android.chrome.browser/bookmarks

关于java - 从浏览器获取重定向的 URL - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353973/

相关文章:

java - 如何确定 TreeItem 是否是叶子

java - EclipseLink JPA 2.1 用户提供的连接

java - 之前的文件删除过程

java - 查找特定日期某个时间的天数、小时数和分钟数

php - 谷歌地图 API 和 XML

c# - "Root element is missing"错误但我有一个根元素

java - 如何在ThreadFactory中初始化ThreadLocal变量?

android - 在运行时为 Android 检索 apk 签名

java - 使用 java Deque 来跟踪国际象棋状态

android - 如何让布局变大变小?