使用较新API级别中删除的较旧API级别的类

时间:2014-06-02 07:00:57

标签: java android android-4.4-kitkat

我想在API级别16上访问android.webkit.WebSettingsClassic类,但是为API级别19编译我的应用程序。{1}}类已在API级别19中删除,因此编译器无法看到它。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我使用以下修改后的代码解决了它。这允许您针对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();
        }
    }
}