这是我的问题,我想从用户那里授权我的应用程序。 为此,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/