Android 应用 怎么读取自身apk文件 (data/app目录下的) RT想通过这种方式实现很多功能,如:计算自身apk的md5用来和服务端安装包的md5对比来判断应用是否需要更新不知道能不能实现Androidmd5更新读取apk 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是具体怎么实现呢?在没有root权限的情况下 只需要有读取自身apk的权限就行了 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(); }}已经自己解决了 关于画图速度相关问题 android 用socket获取大量数据时,不全,时间太久 关于webkit,在网页中存在<input type="file" >时,页面其他元素消失 求助,关于开机自启动程序报错 使用adb.exe 我的笔记本上同时连接了两台 android 手机,我想把pc上一个文件发到m9 的机器上,命令怎么写? 关于如何定位异常 android个人开发者的图片素材从何而来 安卓SOCKET求助 使用Iterator 报空指针错误 请大神指导 新手求问一个关于button移动的问题 Android中如何实现写入一个文件到SD卡的同时对该文件进行读取? 有没有这样一种软件
在没有root权限的情况下
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();
}
}已经自己解决了