apk本地升级,可以直接调用系统的升级程序:
Uri uri = Uri.fromFile( new File(fileName,apkname)); Intent intent = new Intent(Intent. ACTION_VIEW ); intent.setDataAndType(uri, "application/vnd.android.package-archive" ); mainactivity.startActivity(intent);
也可以调用系统的apk升级接口进行升级,但需要获得root权限。
参考:
http://www.cnblogs.com/abob/archive/2010/12/16/1908356.html
apk的网络升级,可以分为以下几个步骤:
1.获得当前版本号
2.获得服务器的版本号并进行对比
3.下载apk
4.调用系统升级程序进行升级
1.获取当前apk的版本号:
name = mainactivity.getPackageManager().getPackageInfo(packageName, 0).versionName; version = mainactivity.getPackageManager().getPackageInfo(packageName, 0).versionCode;
参考:
http://www.eoeandroid.com/thread-21154-1-1.html
2.可在服务器上放上关于要升级apk的版本信息及相应的升级限制。如果要进行服务器和客户端交互,需要tomcat服务器,如果只是简单的下载文件升级,采用appach服务器即可。使用的升级文档,可以采用多种形式,本人使用的是xml文档。
java解析xml文档参考:
http://blog.csdn.net/youyajie/article/details/7461325
http://hi.baidu.com/liuzy84/item/3b7ffd12f28e73a4feded59f
3.从服务器上下载apk,对比版本并升级。
参考:
http://www.cnblogs.com/shmily0703/archive/2012/04/19/shmily_apk_update.html
http://blog.csdn.net/peijiangping1989/article/details/7431491
http://www.cnblogs.com/shmily0703/archive/2012/04/19/shmily_apk_update.html
http://52android.blog.51cto.com/2554429/496621 //关于网络编程的简单使用
4.对下载下来的apk安装,可以采用本地升级的方法,调用系统程序进行安装。
需要注意的是,网络下载apk的时候,需要在AndroidManifest.xml文件中设置权限才能把下载下来的apk写入路径中,同时创建目录,不能一次创建多级目录,一次只能创建一级目录:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />