我已经支持这个很久了。并设法解决了这个问题。我想在这里解释问题和最简单的解决方法。
错误在这里...
该错误是设备制造商或 ROM 创建者使用旧版地图库和新版 Android 造成的。通常,这与晦涩的平板电脑隔离,但理论上它可能会出现在其他情况下。(在这里解释)
android.security.MessageDigest
在 Honeycomb 及以后被删除。这是导致问题的原因。
从您的代码中轻松修复:
只需在包 android\security 下的 src 目录中创建 MessageDigest.java 并将下面的代码放入其中。
这种解决方法实际上有效,并且是我发现的最非侵入性的。我还没有看到任何副作用。
package android.security;
import java.security.NoSuchAlgorithmException;
public class MessageDigest
{
private java.security.MessageDigest instance;
public MessageDigest() {}
private MessageDigest(java.security.MessageDigest instance)
{
this.instance = instance;
}
public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
{
if (algorithm == null) return null;
try
{
if (algorithm.equals("SHA-1"))
return (MessageDigest) Class.forName("android.security.Sha1MessageDigest").newInstance();
else if (algorithm.equals("MD5"))
return (MessageDigest) Class.forName("android.security.Md5MessageDigest").newInstance();
}
catch (Exception e) {}
return new MessageDigest(java.security.MessageDigest.getInstance(algorithm));
}
public void update(byte[] input)
{
instance.update(input);
}
public byte[] digest()
{
return instance.digest();
}
public byte[] digest(byte[] input)
{
return instance.digest(input);
}
}