您好我正在使用带有嵌入式webview的弹出式对话框在我的应用中测试各种网站的OAuth授权,用户可以登录并授权。适用于twitter和foursquare。但是由于某些原因,Tumblr无法正常渲染。
当我将授权网址放入桌面浏览器时,一切正常。然而,在我的手机上,无论是在手机浏览器上还是在我的应用程序的网页浏览中,我得到的都是标题“tumblr。准备就绪。现在是时候了。按下按钮”加上一个蓝色矩形和一个灰色矩形在其下面我无法与之互动。
我尝试过设置javascript设置(Android webview not rendering html content correctly),打开和关闭硬件加速(Android webview not rendering correctly)或设置存储选项(Problems loading mobile.twitter in webview)。什么都行不通。如果有人有任何想法,将非常感激!
非常感谢, RIZ
编辑:我怀疑这与手机中的Chrome有关,而不是我的代码,因为Chrome本身似乎无法正常呈现Tumblr。
无论如何,这是我正在使用的代码:
public class FragmentOAuthUrlBrowser extends Fragment {
private static final String REQUEST = "com.chdryra.android.reviewer.View.ActivitiesFragments.FragmentViewUrlBrowser.url";
private static final int LAYOUT = R.layout.fragment_review_url_browser;
private static final int WEB_VIEW = R.id.web_view;
private OAuthRequest mRequest;
public static FragmentOAuthUrlBrowser newInstance(OAuthRequest request) {
return FactoryFragment.newFragment(FragmentOAuthUrlBrowser.class, REQUEST, request);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args != null) mRequest = args.getParcelable(REQUEST);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(LAYOUT, container, false);
WebView webView = (WebView) v.findViewById(WEB_VIEW);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new OAuthWebViewClient());
webView.loadUrl(mRequest.getAuthorisationUrl());
return v;
}
private class OAuthWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
mRequest.setCallbackResult(view.getUrl());
super.onPageFinished(view, url);
}
}
谢谢!
答案 0 :(得分:1)
我实施了TumblrLogin。不需要使用硬件加速和存储。
使用
启用JavaScript//Enable JS support on web browser - important since TumblrLogin utilises JS components to show / hide UI
//Login page will not show up properly if this is not done
webView.getSettings().setJavaScriptEnabled(true);
设置新的WebView客户端以捕获重定向。我找到了一个普通的WebViewClient来做这个伎俩。我想ChromeWebViewClient也应该可以找到。
这就是全部。无需其他自定义。希望你指出正确的网址。
<string name="tumblr_request">https://www.tumblr.com/oauth/request_token</string>
<string name="tumblr_access">https://www.tumblr.com/oauth/access_token</string>
<string name="tumblr_auth">https://www.tumblr.com/oauth/authorize</string>