[英]Use class from older API level removed in newer API level
I want to access the android.webkit.WebSettingsClassic
class on API level 16 but compile my application for API level 19. The WebSettingsClassic
class has been removed in API level 19 and thus the compiler cannot see it. 我想访问API级别16上的
android.webkit.WebSettingsClassic
类,但将我的应用程序编译为API级别WebSettingsClassic
类已在API级别19中删除,因此编译器无法看到它。 How do I solve this? 我该如何解决?
I solved it using the following modified code. 我使用以下修改的代码解决了它。 This allows you to compile against API level 19.
这使您可以根据API级别19进行编译。
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public static String getUserAgent(final Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
return WebSettings.getDefaultUserAgent(context);
}
else {
try {
final Class<?> webSettingsClassicClass = Class.forName("android.webkit.WebSettingsClassic");
final Constructor<?> constructor = webSettingsClassicClass.getDeclaredConstructor(Context.class, Class.forName("android.webkit.WebViewClassic"));
constructor.setAccessible(true);
final Method method = webSettingsClassicClass.getMethod("getUserAgentString");
return (String) method.invoke(constructor.newInstance(context, null));
}
catch (final Exception e) {
return new WebView(context).getSettings()
.getUserAgentString();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.