RT想通过这种方式实现很多功能,如:计算自身apk的md5
用来和服务端安装包的md5对比
来判断应用是否需要更新不知道能不能实现Androidmd5更新读取apk

解决方案 »

  1.   

    但是具体怎么实现呢?
    在没有root权限的情况下
      

  2.   

    只需要有读取自身apk的权限就行了
      

  3.   

    package com.myncic.test2;import java.io.FileInputStream;
    import java.io.InputStream;
    import java.security.MessageDigest;
    import android.os.Bundle;
    import android.util.Log;
    import android.app.Activity;public class MainActivity extends Activity { @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


            InputStream fis;
            byte[] buffer = new byte[1024];
            int numRead = 0;
            MessageDigest md5;
            String test="";
            try{
                fis = new FileInputStream(getPackageResourcePath());
                md5 = MessageDigest.getInstance("MD5");
                while((numRead=fis.read(buffer)) > 0) {
                    md5.update(buffer,0,numRead);
                }
                fis.close();
                test=toHexString(md5.digest());
            }
            catch(Exception e)
            {
             e.printStackTrace();
            }
            test.toString();
            Log.i("md5",test);
    }

    private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    'A', 'B', 'C', 'D', 'E', 'F' };
        public static String toHexString(byte[] b) {
            StringBuilder sb = new StringBuilder(b.length * 2);
            for (int i = 0; i < b.length; i++) {
                sb.append(HEX_DIGITS[(b[i] & 0xf0) >>> 4]);
                sb.append(HEX_DIGITS[b[i] & 0x0f]);
            }
            return sb.toString();
        }
    }已经自己解决了