Android应用程序自我更新
可能重复:Android应用程序自我更新,android,apk,android-install-apk,Android,Apk,Android Install Apk,可能重复: 我需要更新我的android应用程序。在程序内部,我下载了新版本。如何用(以编程方式)下载的新版本替换当前版本 如果更新后的apk具有相同的包名,并且使用相同的密钥签名,那么您可以发送一个intent,该intent将调用默认的android安装程序。已安装的apk将被覆盖 Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.fromFile(new File(pathToApk)); intent.setDa
我需要更新我的android应用程序。在程序内部,我下载了新版本。如何用(以编程方式)下载的新版本替换当前版本
如果更新后的apk具有相同的包名,并且使用相同的密钥签名,那么您可以发送一个intent,该intent将调用默认的android安装程序。已安装的apk将被覆盖
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(pathToApk));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);
你好@lexmiir,谢谢你的回复,我照你说的做了,现在我得到一个警告对话框,说解析器错误-解析包时出现问题。有什么线索吗?:-)嗨@nonickh,你用同一个密钥签署了两个apk吗?当使用不同的keysHi@lexmiir对具有相同包名的应用程序进行签名时,可能会出现此错误。很抱歉,延迟,我比较了两个文件,它们不同,可能是由于复制站点的过程造成的,我首先尝试解决此问题,感谢您的支持可能已经解决,但作为将来的参考,您不应该写入完整的缓冲区,只有读取的字节数,即
fos.write(buff,0,len)
其中len
在写入最后一个块时可能会小于buffer.length
。我遇到了同样的错误,并通过在ftp程序中使用二进制模式上传apk文件来解决。
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(pathToApk));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);