奥利奥许可证检查

licence check for oreo

对于新的 Android 应用程序更新,我必须将 compileSdkversion 设置为 26。

当我这样做时,我在以下函数 (ServerManagedPolicy.java) 中遇到了自动售货许可证库的问题:

private Map<String, String> decodeExtras(String extras) {
    Map<String, String> results = new HashMap<String, String>();
    try {
        URI rawExtras = new URI("?" + extras);
        List<**NameValuePair**> extraList = 
        **URLEncodedUtils**.parse(rawExtras, "UTF-8");
        for (**NameValuePair** item : extraList) {
            results.put(item.getName(), item.**getValue**());
        }
    } catch (URISyntaxException e) {
        Log.w(TAG, "Invalid syntax error while decoding extras data 
        from server.");
    }
    return results;
}

我知道这些功能已经过时,但是 Android Vending Licensing 库没有更新版本,而且我无法找到如何使其适用于 Oreo,或者通常高于 [= 的版本25=] 19 就是我现在用的compileSdkversion

谁能帮忙解决这个问题?

PS。 useLibrary 'org.apache.http.legacyuseLibrary 'org.apache.http.legacy 无效。应用会直接崩溃

下一步试试:

import java.net.URLDecoder;

private static Map<String, String> decodeExtras(final String extras)
{
    final Map<String, String> results = new HashMap<>();

    try
    {
        if (TextUtils.isEmpty(extras) == false)
        {
            final String[] pairs = extras.split("&");

            if (pairs.length > 0)
            {
                for (final String pair : pairs)
                {
                    final int index = pair.indexOf('=');
                    final String name = URLDecoder.decode(pair.substring(0, index), "UTF-8");
                    final String value = URLDecoder.decode(pair.substring(index + 1), "UTF-8");

                    results.put(name, value);
                }
            }
        }
    }
    catch (UnsupportedEncodingException e)
    {
        Log.w(TAG, "Invalid syntax error while decoding extras data from server.");
    }

    return results;
}