当前位置:首页 » 安卓系统 » androidapp版本更新

androidapp版本更新

发布时间: 2022-07-24 01:14:19

❶ 安卓app频繁更新的意义在哪

修复低版本的部分BUG,增加新的功能。

软件升级,指软件从低版本向高版本的更新。由于高版本常常修复低版本的部分BUG,所以经历了软件升级,一般都会比原版本的性能更好,得到优化的效果,用户也能有更好的体验。

是指软件开发者在编写软件的时候,由于设计人员考虑不全面或程序功能不完善,在软件发行后,通过对程序的修改或加入新的功能后,以补丁的形式发布的方式。用户把这些补丁更新,即升级完成!
或者升级软件界面。

安卓手机如何更新软件

若使用的是vivo手机,可进入应用商店--管理--应用更新中,点击软件后面的更新来升级软件;
注:系统软件是由我们公司不定期推送更新版本的,且每款机器获取最新版本的时间可能不同,部分是随系统升级而升级。

❸ 安卓手机app怎么更新

第三方的软件,可查看该该软件中是否有检查更新”,如有可进行更新;若没有,可到软件官网下载安装包,直接安装(安装后有些软件是将原软件覆盖安装,有些软件是不会覆盖,会再出现一个软件图标)。
注意:更新软件时消耗流量较大,建议使用WLAN更新。

你的手机是不是刷机过?可先找到完整刷机包(五个文件的),把手机刷机后,再进行更新。手机---设置---关于手机---系统更新。如果这种方法还是不能更新,下载三星KISE,做紧急固件恢复,然后再进行升级即可

对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,网络,360,机锋,应用宝等等,当我们想上线一款新版本APP时,先不说渠道打包的麻烦,单纯指上传APP到各大应用市场的工作量就已经很大了,好不容易我们把APP都上传完了,突然发现一个会导致应用闪退的小Bug,这时那个崩溃啊,明明不是很大的改动,难道我们还要再去重新去把各大应用市场的版本再上传更新一次?相信我,运营人员肯定会弄死你的!!

有问题,自然就会有解决问题的方案,因此我们就会想到如果在APP里内嵌自动更新的功能,那么我们将可以省去很多麻烦,当然关于这方面功能的第三方SDK有很多。

好了,言归正传,今天我们自己来实现下关于APP自动更新。

流程其实并不复杂:当用户打开APP的时候,我们让APP去发送一个检查版本的网络请求,或者利用服务端向APP推送一个透传消息来检查APP的版本,如果当前APP版本比服务器上的旧,那么我们就提醒用户进行下载更新APP,当然在特定的情况下,我们也可以强制的让用户去升级,当然这是很不友好的,尽可能的减少这样的做法。

好了,来梳理下流程,首先既然是一个APP的更新,那么我们就需要去下载新的APP,然后我们需要一个通知来告诉用户当前的下载进度,再来当APP安装包下载完成后,我们需要去系统的安装程序来对APP进行安装更新。
知识点:

下载:异步HTTP请求文件下载,并监听当前下载进度(这里我采用了okhttp)
通知:Notification(具体用法请自行翻阅API文档)
安装:Intent (具体用法请自行翻阅API文档)

❹ Android 如何通知用户更新app的版本

会在每个应用商店的更新中显示的

❺ 如何简单实现安卓app自动更新功能

Android 系统4.0 命名为 Ice Cream Sandwich(简称ICS,冰淇淋三明治),是谷歌发布新一代操作系统。Android4.0 拥有十大重点新特性。集成谷歌电视和Chrome OS的智能停放 ,运行速度得到进一步提升。2011年10月19日上午十点,谷歌与三星联手在中国香港举办发布会,公布有关Android 4.0系统信息。 十大特性: 1、Android统一版本 电视手机平板融合,Android 4.0将只提供一个版本,同时支持智能手机、平板电脑、电视等设备。至此Android系统设备将迎来统一,Android平板的窘迫现状将得到有效改善。另一方面包括三星、索尼在内的家电厂商日益发展的Smart TV也将迎来一次有价值的Android版本升级。 2、 全新设计的UI人性化体验界面 谷歌在经历了Android 2.3的版本更新之后,手机系统UI进行了不小的改进,而新的Android 3.1的用户界面也一改此前Android单调的风格。在经历了众多版本的演化之后,谷歌应该对于用户界面体验方面有所提升,新的UI设计很有可能会迎来成熟版。 3、回归原点 保持开源特性 此前Android 3.0曾一度宣布不采取开源措施,然而谷歌深知Android系统一大成功特性就是开源。平板上吃到的苦头势必在全新的Android 4.0上避免,用户为中心的刷机资源一定会让Android 4.0锦上添花。如果你是一个ROM的定制用户,那么你会对这条消息很开心,相信源码一旦发布,很快就能看到 CyanogenMod 9。 4、同步升级Linux内核 更新3.0以上版本 Android是Google自己研发的手机平台操作系统,该平台基于开源软件Linux,由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件 4.0的版本号就能告诉我们,这是一个大的升级版本。Linux刚刚发布Linux 3.0内核没多久,后来又更新到了3.0.1 。 5、音频、视频Android Market提供资源下载 谷歌已经试水性质的推出了Google Music Beta ,允许上传2万首音乐到Google的云端服务器,自动创建播放列表在任何支持flash的设备上回放,我们有理由相信这种在Appstore影响下的数字视频、音频服务内容的提供也将会出现在Android上。 6、针对多核处理器优化 随着越来越多的厂商都在推双核的智能手机,实际的效果如何我们不予评说,但Android 4.0将特别为使用双核乃至多核处理器的手机进行专门的优化,充分发挥双核的性能。 7、运行速度全面提升 虽然官方暂时并没有提及这个性能具体体现在什么方面,但是性能上的提升是势必会有的。 8、集成Google电视和Chrome OS的智能停放 除了在智能电视Google TV中进行融合,全新的Android 4.0也将有望借鉴Chrome OS系统的智能停放功能进行优化,这些功能有望帮助Android 4.0在多项设备终端进行整合。 9、为OEM提供了官方的主题引擎 有了这个引擎,便可通过Google的升级程序更新到这些第三方的主题。必须的,现在外观同质化这么严重,主题与内涵成为了手机的重点因素之一。 10、比拟GameCenter的游戏中心 Google收购和投资如LabPixies、Slide、Jambool、Zynga等公司,这些都将会是Google手机游戏社交网络的技术储备,而直接竞争对手会是苹果的Games Center。这些都预示着Android下一个版本将迎来一次整合高质量游戏应用的一个平台。 全新的UI: 谷歌云音乐:谷歌云音乐业务最早出现Android 3.1系统版本上,但当时谷歌云音乐应用还比较原始,现在,成熟的谷歌云音乐将随着Ice Cream Sandwich一起到来。谷歌云音乐业务将允许平板电脑和智能手机离线保存已经播放过的音乐,并可以离线下载,由于采用了云存储技术,这些音乐将可以在用户的所有Android系统设备中共享。 速度提升: 人们普遍将安卓平板电脑销量不佳归结于操作系统的不给力,认为安卓平板使用体验距离苹果iPad有着不小的距离,现在,随着苹果iOS 5和安卓Ice Cream Sandwich的发布,新一轮的比拼已经。而作为消费者,我们也相当乐于看到两家巨头的竞争,因为商家的竞争必将为我们消费者带来更多价格便宜、使用体验舒适的产品。 新特性: 1.虚拟按键,增大屏幕面积同时控制手机整体大小 正如之前泄漏的资料,新版Android系统取消了底部物理按键设计,采用虚拟按键,这样可以在机身大小不变的情况下增大屏幕显示面积,同时这样的操作方式可以与平板机保持一致。 2.桌面插件Widgets列表呈现在标签页中,与程序列表类似并且共存 程序列表现在支持切换至桌面插件列表,插件列表以缩略图展示实际显示效果,拖动至桌面即可使用。 3.文件夹更容易创建和管理,与iOS类似 新版文件夹功能非常简单,你只需要拖动一个图标到另一个图表上,就能集合成一个文件夹,然后可以重命名文件夹,并整理图标快捷方式,支持快速拨号、文件等内容放入文件夹,这有点类似于iOS。 4.可定制的桌面系统 桌面功能增加可定制项目,比如屏幕底部的快捷栏,默认三个按钮,你可以增加至五个,并且定义每个按钮的功能,可以是程序、联系人、快速拨号以及文件夹。 5.可视语音邮件 独立应用,可集成在通话记录中显示,包括语音信箱留言、可视留言等内容,与语音通话记录同时显示。 6.日历支持缩放操作 日期切换更加方便,可以放大查看详细日程,支持双指缩放操作。 7.Gmail离线搜索,两行预览,以及底部新快捷栏 收件箱字体得到更换,图标、布局均重新设计,底部快捷栏可以写邮件、搜索、访问标签,加入离线搜索支持,收件箱显示两行文字预览,左右滑动切换Gmail会话。 8.音量下键+电源键组合截图 9.改进虚拟键盘纠错 纠错和拼写检查得到改进,点击单词即可得到建议结果。 10.从锁屏界面直接访问应用程序 锁屏界面拖动解锁图标至应用快捷方式可以直接打开该应用,另外锁屏时也可以使用下拉通知栏。 11.优化复制粘贴 12.新版浏览器 内置浏览器改版,标签系统增强,可以快捷打开标签切换,最多同时打开16个标签页,支持Chrome书签同步。 13.新的Roboto字体 显示效果更加清晰美观,与整个界面系统完美融合。 14.流量控制系统 第三方流量控制可以歇菜了,系统内置流量统计,可以显示某一时段内流量使用记录,支持设置限额报警和自动断网,可以查看单个程序流量使用记录并禁用其后台流量使用权限。 15.相机应用 零快门延迟、时间间隔设置、录制同时变焦,单张拍照一秒内完成。 16.人脸识别,刷脸解锁 人脸识别功能得到应用,比如解锁,可以在设置之后自拍进行屏幕解锁 17.内置照片编辑器 内置了照片编辑器,功能比较强大,可以进行裁剪、美化、调色等修改 18.多任务列表 多任务列表展示最近运行程序缩略图,你可以关闭某个程序来释放内存。 19.新的图库布局和组织方式 全新的图库设计,可以自动按照主题、地理位置、人脸识别等方式组织照片的排列显示 20.联系人应用整合社交网络信息 新版联系人程序功能更加丰富,可以集成社交网络信息,内置状态更新,可查看高清图像,可以快速发送邮件, 21.Android Beam 基于NFC的Android Beam功能可以让两部手机交换网站、联系人、导航、YouTube视频等,甚至官方电子市场的下载链接。

❻ 如何对Android的版本进行检测与更新

一、准备

1.检测当前版本的信息AndroidManifest.xml-->manifest-->android:versionName。

2.从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。

3.当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。

二、效果图


三、必要说明

服务器端存储apk文件,同时有version.xml文件便于比对更新。

<?xml version="1.0" encoding="utf-8"?>
<info>
<version>2.0</version>
<url>http://192.168.1.187:8080/mobilesafe.apk</url>
<description>检测到最新版本,请及时更新!</description>
<url_server>http://192.168.1.99/version.xml</url_server>
</info>
通过一个实体类获取上述信息。

package com.android;
public class UpdataInfo {
private String version;
private String url;
private String description;
private String url_server;

public String getUrl_server() {
return url_server;
}
public void setUrl_server(String url_server) {
this.url_server = url_server;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
apk和版本信息地址都放在服务器端的version.xml里比较方便,当然如果服务器端不变动,apk地址可以放在strings.xml里,不过版本号信息是新的,必须放在服务器端,xml地址放在strings.xml。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, VersionActivity!</string>
<string name="app_name">Version</string>
<string name="url_server">http://192.168.1.99/version.xml</string>
</resources>
不知道读者发现没有,笔者犯了个错误,那就是url_server地址必须放在本地,否则怎么读取version.xml,所以url_server不必在实体类和version里添加,毕竟是现需要version地址也就是url_server,才能够读取version。

三、代码实现

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn_getVersion"
android:text="检查更新"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
package com.android;
import java.io.InputStream;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
public class UpdataInfoParser {
public static UpdataInfo getUpdataInfo(InputStream is) throws Exception{
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");
int type = parser.getEventType();
UpdataInfo info = new UpdataInfo();
while(type != XmlPullParser.END_DOCUMENT ){
switch (type) {
case XmlPullParser.START_TAG:
if("version".equals(parser.getName())){
info.setVersion(parser.nextText());
}else if ("url".equals(parser.getName())){
info.setUrl(parser.nextText());
}else if ("description".equals(parser.getName())){
info.setDescription(parser.nextText());
}
break;
}
type = parser.next();
}
return info;
}
}
package com.android;
import java.io.File;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class VersionActivity extends Activity {
private final String TAG = this.getClass().getName();
private final int UPDATA_NONEED = 0;
private final int UPDATA_CLIENT = 1;
private final int GET_UNDATAINFO_ERROR = 2;
private final int SDCARD_NOMOUNTED = 3;
private final int DOWN_ERROR = 4;
private Button getVersion;
private UpdataInfo info;
private String localVersion;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getVersion = (Button) findViewById(R.id.btn_getVersion);
getVersion.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
localVersion = getVersionName();
CheckVersionTask cv = new CheckVersionTask();
new Thread(cv).start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
private String getVersionName() throws Exception {
//getPackageName()是你当前类的包名,0代表是获取版本信息
PackageManager packageManager = getPackageManager();
PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(),
0);
return packInfo.versionName;
}
public class CheckVersionTask implements Runnable {
InputStream is;
public void run() {
try {
String path = getResources().getString(R.string.url_server);
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
int responseCode = conn.getResponseCode();
if (responseCode == 200) {
// 从服务器获得一个输入流
is = conn.getInputStream();
}
info = UpdataInfoParser.getUpdataInfo(is);
if (info.getVersion().equals(localVersion)) {
Log.i(TAG, "版本号相同");
Message msg = new Message();
msg.what = UPDATA_NONEED;
handler.sendMessage(msg);
// LoginMain();
} else {
Log.i(TAG, "版本号不相同 ");
Message msg = new Message();
msg.what = UPDATA_CLIENT;
handler.sendMessage(msg);
}
} catch (Exception e) {
Message msg = new Message();
msg.what = GET_UNDATAINFO_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
}
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case UPDATA_NONEED:
Toast.makeText(getApplicationContext(), "不需要更新",
Toast.LENGTH_SHORT).show();
case UPDATA_CLIENT:
//对话框通知用户升级程序
showUpdataDialog();
break;
case GET_UNDATAINFO_ERROR:
//服务器超时
Toast.makeText(getApplicationContext(), "获取服务器更新信息失败", 1).show();
break;
case DOWN_ERROR:
//下载apk失败
Toast.makeText(getApplicationContext(), "下载新版本失败", 1).show();
break;
}
}
};
/*
*
* 弹出对话框通知用户更新程序
*
* 弹出对话框的步骤:
* 1.创建alertDialog的builder.
* 2.要给builder设置属性, 对话框的内容,样式,按钮
* 3.通过builder 创建一个对话框
* 4.对话框show()出来
*/
protected void showUpdataDialog() {
AlertDialog.Builder builer = new Builder(this);
builer.setTitle("版本升级");
builer.setMessage(info.getDescription());
//当点确定按钮时从服务器上下载 新的apk 然后安装 װ
builer.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.i(TAG, "下载apk,更新");
downLoadApk();
}
});
builer.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//do sth
}
});
AlertDialog dialog = builer.create();
dialog.show();
}
/*
* 从服务器中下载APK
*/
protected void downLoadApk() {
final ProgressDialog pd; //进度条对话框
pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("正在下载更新");
pd.show();
new Thread(){
@Override
public void run() {
try {
File file = DownLoadManager.getFileFromServer(info.getUrl(), pd);
sleep(3000);
installApk(file);
pd.dismiss(); //结束掉进度条对话框
} catch (Exception e) {
Message msg = new Message();
msg.what = DOWN_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
}}.start();
}

//安装apk
protected void installApk(File file) {
Intent intent = new Intent();
//执行动作
intent.setAction(Intent.ACTION_VIEW);
//执行的数据类型
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
}
}
package com.android;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.ProgressDialog;
import android.os.Environment;
public class DownLoadManager {
public static File getFileFromServer(String path, ProgressDialog pd) throws Exception{
//如果相等的话表示当前的sdcard挂载在手机上并且是可用的
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
//获取到文件的大小
pd.setMax(conn.getContentLength());
InputStream is = conn.getInputStream();
File file = new File(Environment.getExternalStorageDirectory(), "updata.apk");
FileOutputStream fos = new FileOutputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buffer = new byte[1024];
int len ;
int total=0;
while((len =bis.read(buffer))!=-1){
fos.write(buffer, 0, len);
total+= len;
//获取当前下载量
pd.setProgress(total);
}
fos.close();
bis.close();
is.close();
return file;
}
else{
return null;
}
}
}
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

❼ 怎么升级安卓软件版本

若使用的是vivo手机,可查看更新软件方法:进入应用商店--管理--应用更新中,点击软件后面的更新来升级软件。

❽ android软件的版本更新是如何实现的

l1.. 可以打开手机中的无线升级软件 ,看是否有升级提示,若有可以升级,这是手机厂家的自动升级;2..到手机维修店去做升级系统。 3.千万不要自己刷机升级,由于系统的不兼容性会造成变砖不能使用

热点内容
内存大小的存储 发布:2025-01-22 18:58:17 浏览:392
tampermonkey脚本 发布:2025-01-22 18:53:17 浏览:116
windows7共享文件夹 发布:2025-01-22 18:53:17 浏览:478
如何调节安卓手机的内存 发布:2025-01-22 18:49:30 浏览:638
佳能相机存储卡怎么取消 发布:2025-01-22 18:40:59 浏览:568
天猫宝贝上传 发布:2025-01-22 18:35:09 浏览:544
ipad如何登录金铲铲安卓账号 发布:2025-01-22 18:32:09 浏览:319
加密沟通 发布:2025-01-22 18:31:22 浏览:555
win7ftp用户名和密码设置 发布:2025-01-22 17:46:48 浏览:221
三表联查的sql语句 发布:2025-01-22 17:27:13 浏览:418