关于app更新升级的方法
2.第三方更新: 其实和上一种方式基本相同需要集成第三方,仅仅是减少了我们的工作量,但是也有缺点,就是延时的问题 更新不会及时生效。
- android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(MainActivity. this);
- builder.setTitle( "四不四要更新?");
- builder.setMessage( "快点点搜");
- builder.setPositiveButton( "点我更新噻", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int i) {
- dialog.dismiss();
- Intent intent = new Intent(MainActivity. this, DownLoadServerice.class);
- startService(intent);
- }
- });
- builder.setNegativeButton( "不更新滚", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int i) {
- dialog.dismiss();
- }
- });
- builder.create().show();
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- }
compile 'io.reactivex:rxandroid:1.2.1'
compile 'com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar'
- <code class="language-java">RxPermissions.getInstance(this)
- // 申请权限
- .request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
- .subscribe(new Action1<Boolean>() {
- @Override
- public void call(Boolean granted) {
- if(granted){
- //请求成功
- startDownload(downloadUrl);
- }else{
- // 请求失败回收当前服务
- stopSelf();
- }
- }
- });
- //注册广播
- receiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- install(context);
- //销毁当前的Service
- stopSelf();
- }
- };
- registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
- return Service.START_STICKY;</code>
startDownload()方法中的内容 开启系统的一个下载器进行下载 当然有的app这个下载器会自己写
- private void startDownload(String downUrl) {
- //获得系统下载器
- dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
- //设置下载地址
- DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downUrl));
- //设置下载文件的类型
- request.setMimeType( "application/vnd.android.package-archive");
- //设置下载存放的文件夹和文件名字
- request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "versionupdate.apk");
- //设置下载时或者下载完成时,通知栏是否显示
- request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
- request.setTitle( "下载新版本");
- //执行下载,并返回任务唯一id
- enqueue = dm.enqueue(request);
- }
- <code class="language-java">public static void install(Context context) {
- File file = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) , "versionupdate.apk");
- Intent intent = new Intent(Intent.ACTION_VIEW);
- // 由于没有在Activity环境下启动Activity,设置下面的标签
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- if(Build.VERSION.SDK_INT>=24) {
- //判读版本是否在7.0以上 7.0对文件的权限有了新的修改
- Uri apkUri = FileProvider.getUriForFile(context, "com.hxtj.versionupdate.fileprovider", file);
- //添加这一句表示对目标应用临时授权该Uri所代表的文件
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
- intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
- }else{
- intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
- }
- context.startActivity(intent);
- }</code>
- <code class="language-java"><uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- <uses-permission android:name="android.permission.INTERNET"/>
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
- <uses-permission android:name="android.permission.READ_LOGS"/>
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></code>
在清单文件中加入Bulay的Activity
<activity android:name="com.tencent.bugly.beta.ui.BetaActivity" android:theme="@android:style/Theme.Translucent" android:configChanges="keyboardHidden|orientation|screenSize|locale"/>
在application中初始化Bulay
Bugly.init(getApplicationContext(), "你的appid", false);
然后在手机上跑一个1.0的版本,在制作一个2.0的版本包 将2.0上传到bugly平台上启动。这样的话就完成了,相对来说比第一种方法简单了很多 ,如果对更新的样式之类的需求不是很强烈的话 (bugly对开发者也提供了一些不同的弹出样式以供选择,还是很人性化的) 可以使用这种更新方式,在启动之后会有几分钟的延迟效果才会生效。在接下来的热更新中延时效果会更加明显。
classpath‘com.tencent.bugly:tinker-support:1.1.1’
apply from: 'tinker-support.grald'
新建一个glade文件 tinker-support.grald 将官方文档的内容全部粘贴进入 覆盖之前的所有内容
compile "com.android.support:multidex:1.0.1"
- 初始化sdk
- 将tinker-support.grald中的enableProxyApplaction改为 true
- 设置自动生成tinkerid : autoGenerateTinkerId= true
- 支持新增Activity : supportHotplugComponent= true
- @Override
- protected void attachBaseContext(Context base) {
- super.attachBaseContext(base);
- // you must install multiDex whatever tinker is installed!
- MultiDex.install(base);
- // 安装tinker
- Beta.installTinker();
- }
这就是三种不同的更新方式,如果你想直接使用后两种更新方法,建议还是先看一下本地更新,自己写过的才是自己的。
关于app更新升级的方法相关推荐
- Flutter App更新升级
1. 应用程序升级流程 由于在 IOS 中没法直接下载安装,如果版本不一致则直接跳转到IOS应用对应的应用市场就可以了,所以本文仅介绍Android App的升级流程. Android App升级流程 ...
- Android 项目必备(二十九)-->App 在线升级与更新
文章目录 前言 实战 前言 1. 用户使用 App 的时候升级提醒有两种方式获得: 通过应用市场获取: 打开应用之后提醒用户更新升级. 2. 更新操作一般是在用户点击了升级按钮之后开始执行的,这里的升 ...
- uniapp App更新解决方法
uniapp App更新解决方法 最近项目碰到的app更新问题,安卓和iOS更新. 功能实现效果 安卓端:后台下载,自动弹出系统安装界面 iOS端:跳转 appStore app更新界面 1.获取用户 ...
- mac java 更新_mac版java怎么更新升级 mac版java更新升级方法
类型:Mac编程软件大小:62.3M语言:中文 评分:10.0 标签: 立即下载 mac版java怎么更新升级?mac版java更新升级方法.有很多使用Mac的用户需要mac版java,有的时候需要下 ...
- android 使用系统下载并更新版本,安卓系统更新升级的种方法
最近有网友问小编"安卓系统怎么升级?",针对该问题,笔者也在网上查找了下相关资料,不过并没有找到什么有价值的相关介绍,多数都是介绍如何自动升级.或者下载升级版包等等方法,对于一些常 ...
- 升级鸿蒙系统最新计划,华为鸿蒙系统更新升级方法分享
在昨晚的鸿蒙操作系统发布会上,华为就正式官宣了关于鸿蒙的百机升级计划,6月份就会有一批手机机型可以支持升级鸿蒙系统.现在很多符合要求的用户都十分期待升级,那么华为鸿蒙系统怎么更新升级呢?下面小编和大家 ...
- win10创意者更新是什么 Win10创意者更新升级方法
伴随着Win10创意者更新推送临近,目前不少科技网站都有相关报道.不过很多网友还不知道win10创意者更新是什么,也不知道如何更新升级,下面电脑百事网就来详细科普一下,电脑爱好者朋友值得一看. win ...
- 计算机更新80072f76,win10系统更新升级出现错误代码0x80072f76的解决方法
很多小伙伴都遇到过win10系统更新升级出现错误代码0x80072f76的情况,想必大家都遇到过win10系统更新升级出现错误代码0x80072f76的情况吧,那么应该怎么处理win10系统更新升级出 ...
- Ubuntu手工进行软件更新升级的两种方法
上一篇文章说了Ubuntu系统自动更新的配置,它适合于经常更新或者干脆不更新的情况,还有一种情况就是偶尔需要更新,也就是根据需要手工更新系统或软件包. 这有两种方法,一种是图形界面的方法,一种是命 ...
最新文章
- SharePoint 2013 Search 配置总结
- RabbitMQ系列之三:publish subscribe
- 内存泄漏检测工具(转载)
- Ayoub and Lost Array
- 配置vim在源代码中自动添加作者信息
- Unity ScriptObject
- java手动调用finalize_Java并手动执行finalize
- 无基础学python能干什么-呼市学Python语言能干什么
- 利用计算机传播非法信息,非法侵入计算机信息系统罪如何处罚
- redis 配置文件翻译
- Android 工具
- MYSQL数据库脱库写马写一句话
- 一篇文带你从0到1了解建站及完成CMS系统编写
- 通过FISH和下一代测序检测肺腺癌ALK基因融合比较
- 不懂这显然您不专业!云计算术语大全
- ZOC7 for Mac(终端仿真器)
- 头条抖音后端技术3面,2021Java通用流行框架大全,含面试题+答案
- 【git 报错】git add添加到暂存区报错:fatal: pathspec ‘xxx‘ did not match any files
- 影像组学|影像组学导论
- 用python绘制高光谱图像的光谱曲线图
热门文章
- 2021年起重机械指挥及起重机械指挥操作证考试
- 时间对象 getDate() 和 setDate() 的使用和返回值
- python时间重叠_Python中的时间范围重叠算法
- 全志平台ap6476 蓝牙功能驱动调试记录
- CSS学习记录(一)
- mysql 订单号主键_关于订单编号 业务主键的生成
- 背水一战 Windows 10 (5) - UI: 标题栏
- 微信小程序Error
- python工程师需要什么学历,python工程师怎么考证
- 微信小程序点击移除添加class(点击改变背景颜色和字体颜色)