2011-12-29 88 views
0

每当在Android 2.1环境中运行以下代码时,它都会崩溃。下面的代码函数将明文字符串转换为MD5。字符串s被硬编码为test。它应该打印以下结果:098f6bcd4621d373cade4e832627b4f6Android MD5实施崩溃

package md5.android; 

import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
import java.util.ArrayList; 
import java.util.Collections; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class md5android extends Activity { 

    public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 

     String s = "test"; 
     String res = md5(s); 
     TextView tv = new TextView(this); 
     tv.setText(res); 
     setContentView(tv); 
    } 

    public String md5(String s) { 
     try { 
      MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); 
      digest.update(s.getBytes()); 
      byte messageDigest[] = digest.digest(); 

      StringBuffer hexString = new StringBuffer(); 
      for (int i=0; i<messageDigest.length; i++) 
       hexString.append(Integer.toHexString(0xFF & messageDigest[i])); 

      return hexString.toString(); 

     } 
     catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } 
     return ""; 
    } 

} 

堆栈跟踪:

Thread [<3> main] (Suspended (exception RuntimeException))  
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2417  
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2512  
ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 119  
ActivityThread$H.handleMessage(Message) line: 1863  
ActivityThread$H(Handler).dispatchMessage(Message) line: 99  
Looper.loop() line: 123  
ActivityThread.main(String[]) line: 4363  
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 521  
ZygoteInit$MethodAndArgsCaller.run() line: 860  
ZygoteInit.main(String[]) line: 618  
NativeStart.main(String[]) line: not available [native method] 

错误日志:

http://pastebin.com/dHXHe9SC

+2

太棒了,它崩溃了...堆栈跟踪怎么样?我的水晶球坏了... – WarrenFaith 2011-12-29 02:36:58

+1

日志消息将是相当有用的..请附上你的错误日志也! – Abhinava 2011-12-29 02:41:10

+0

对不起关于 – joshdeco 2011-12-29 06:01:07

回答

2

该代码应该可以正常工作。从日志来看,问题在于您的Activity类名称与您在AndroidManifest.xml中声明的内容不符。 Android尝试加载活动md5.android.Md5androidActivity,但实际活动为md5.android.md5android

将您的md5android类重命名为Md5androidActivity并且崩溃应该消失,因为它会匹配清单中的内容。

+0

我已将该类重命名为Md5androidActivity,但它仍然崩溃。如果将该项目插入另一个项目(否则该项目可以正常工作),这个相同的md5类会崩溃该项目。 – joshdeco 2011-12-29 23:44:48

+0

修复了清单问题后,崩溃的堆栈跟踪看起来像什么?如果仍然出现“无法实例化活动:java.lang.ClassNotFoundException”,那么您的清单看起来像什么? – 2011-12-30 06:51:22