2011-12-29 90 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