android 自动更新升级的问题

问题描述

大家好,关于android 升级的问题想问下大家,求解答,先言谢了。。

我目前手机上的app版本的30,服务器上的app是31.每一次app启动的时候发送信息区服务器上获取数据,其中 服务器会给过来当前服务器app版本,比对如果高于当前app则启动升级程序。

升级的时候提示成功了。其实却失败了。情况是。应用程序列表的图标和下面的字体都变化了,程序大小也变化了。但是进去之后UI内容没变化。我试验了很多次,卸载程序或者打成apk安装,或者eclipse安装,都一样。确信的是服务器上的Apk下载成功了。我的程序大致逻辑是:

要升级的时候启动一个线程,下载服务器上的apk,如下:

  /**

     * 下载新程序

     */

    public void appUpdate(Context context){

    	HttpClient httpClient = new DefaultHttpClient();

		HttpGet get = new HttpGe("服务器地址"+"/update/XXX.apk");

		HttpResponse response;

		InputStream is = null;

		FileOutputStream fileOutputStream = null;

		try {

			response = httpClient.execute(get);

			HttpEntity entity = response.getEntity();

			is = entity.getContent();

			long len = entity.getContentLength();

			if(is!=null){				

				fileOutputStream = context.openFileOutput("XX.apk", 

			  Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);

				byte[] buf = new byte[1024];

				int ch = -1;

				while((ch = is.read(buf)) != -1){

					fileOutputStream.write(buf, 0, ch);

				}

			}

			fileOutputStream.flush();

		} catch (ClientProtocolException e) {

			// TODO Auto-generated catch block

			e.printStackTrace();

		} catch (IOException e) {

			// TODO Auto-generated catch block

			e.printStackTrace();

		}finally{

			if(is != null){

				try {

					is.close();

				} catch (IOException e) {

					// TODO Auto-generated catch block

					e.printStackTrace();

				}

			}

			if(fileOutputStream != null) {

				try {

					fileOutputStream.close();

				} catch (IOException e) {

					// TODO Auto-generated catch block

					e.printStackTrace();

				}

			}

		}

    }

下载 完成后,在handler里面 更新。

final Handler handler = new Handler() {

			@Override

			public void handleMessage(Message msg) {

				try {

					switch (msg.what) {

					case 1:

						progressDialog.dismiss();

						Intent intent = new Intent(Intent.ACTION_VIEW);

						File file = new File(

								"/data/data/包名/files/XXX.apk");

						Uri uri = Uri.fromFile(file);

						intent.setDataAndType(uri,

								"application/vnd.android.package-archive");

						context.startActivity(intent);

						break;

					default:

						break;

					}

				} catch (Exception e) {

					e.printStackTrace();

				}

			}

当程序启动,android系统提示更新程序,点击更新,弹出系统进度条,之后说安装完成,进去之后如上面所说,里面内容没变化。

解决方案1

下载到SD卡上试试

解决方案2

先搞清楚你在服务器上的31版本是不是正确

解决方案3

服务器上的APK就是不对的感觉

解决方案4

你直接装服务器上的版本对不对?我自动升级没出现过这么扯的情况,想想也不大可能啊

解决方案5

你先确认一下 手机里面data/app下面的odex或者apk时间和大小对不对

如果都是和服务器上的一样 上log吧

1.原始app启动的log

2.下载到升级完成的log

3.新app启动的log

filter全开 尤其是要注意packagemanager和package name的部分

时间: 2024-12-26 20:04:43

android 自动更新升级的问题的相关文章

android开发 更新升级安装到一半自动闪退

如题:android开发 更新升级安装到一半自动闪退,,,解决办法,如下(红色为我新增的代码) /**     * 安装APK文件     */    private void installApk()    {        File apkfile = new File(mSavePath, mHashMap.get("name")); //apkfile  获取已经下载好的待安装apk文件        if (!apkfile.exists())        {       

友盟在线参数+自动更新升级SDK实现指定版本强制更新升级

项目上有这样的需求:对指定的版本要求强制升级,同时其它的版本可以选择性升级. 友盟的自动更新功能还是挺好用的,只不过对强制升级这块支持的还不到位. 不过友盟的开发人员也给出了勉强可行的方案: 使用友盟在线参数来控制哪些版本需要强制更新,哪些版本不需要 相关的内容如下: 1.在线参数配置: http://dev.umeng.com/analytics/android/advanced-integration-guide#3 2.强制更新官方代码: https://github.com/nxzhou

android 自动更新的实现

主要原理是: 在应用启动的时候,去取服务器上版本号 ,与当前应用的对比如果有更新则下载 下面这个是获取当前应用的版本信息 private void getCurVersion() { try { PackageInfo pInfo = context.getPackageManager().getPackageInfo( context.getPackageName(), 0); curVersion = pInfo.versionName; curVersionCode = pInfo.ver

Android应用更新升级实现

介绍 在产品的开发中,android升级提示,下载更新是必备的功能,否则等用户被动去官方网,或者第三方商店提示,就为时已晚了. 原理 在用户每次打开应用的时候,都与服务器进行一次交互,获取版本信息,对比之后,如果版本号大于当前版本号,那么就提示用户升级,否则就当什么都没发生. 直接看代码. 实现 权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission andr

Android 自动更新 + IIS7 添加APK mime

如果APK文件放在IIS下面需要添加APK的mime,否则会出现下面错误 可以在IIS上添加mime映射 .apk application/vnd.android   下面内容转自:http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html 由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此

phonegap(cordova) 自定义插件代码篇(二)----android 自动更新

程序总要更新的,apple 等appstore 处理,android版 自动更新,上代码 /** * 检查并更新APP */ (function (cordova) { var define = cordova.define; define("cordova/plugin/updateApp", function (require, exports, module) { var argscheck = require('cordova/argscheck'), exec = requi

Android 自动更新APP时确定安装后没有显示安装完成页面

自动更新APP代码时,开始用的是以下代码 Intent intent = new Intent(Intent.ACTION_VIEW);                 intent.setDataAndType(Uri.parse("file://"+Constants.SDK_DIR +File.separator+Constants.SDK_NAME), "application/vnd.android.package-archive");         c

通用程序自动更新升级

1)服务端IIS网站上创建新的虚拟路径,给新创建的虚拟路径增加MIME类型:.bpl..ini等. 2)设置update.ini文件版本号配置文件 [ver]config.ini=1bplCommon.bpl=1bplGoods.bpl=1bplPower.bpl=1bplPurchasing.bpl=1prjMain.exe=2 3)客户端 untAutoUpdate.dfm文件: object frmAutoUpdate: TfrmAutoUpdate Left = 0 Top = 0 Ca

Android Studio更新升级方法(转)

自从2013 Google I/O大会之后,笔者就将android ide开发工具从eclipse迁移到Android Studio了,android studio一直在更新完善,为了与时俱进,我们当然要将工具更新到最新版本啦!其实更新本来是很简单,只要从Android Studio Help菜单中选择Check for Update即可: 但是你会收到如下提示: 小伙伴们这是为什么呢?因为“伟大的墙”!!!下面介绍笔者的解决方法. 1.获取自己电脑上安装的Android Studio 的Bui