私は長い間これに遅れをとっています。そして、これを修正することができました。ここで問題と最も簡単な回避策を説明したいと思います。
ここにエラーがあります...
このエラーは、デバイス メーカーまたは ROM 作成者が新しいバージョンの Android で古いマップ ライブラリを使用した結果です。通常、これはタブレットを目立たなくするために分離されていますが、理論的には他の状況でも発生する可能性があります。(ここで説明します)
android.security.MessageDigest
Honeycomm 以降で削除されました。これが問題の原因です。
コードからの簡単な修正:
パッケージ 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);
}
}