使用 volley 下载和安装 APK

     2023-02-19     132

关键词:

【中文标题】使用 volley 下载和安装 APK【英文标题】:Downloading and installing an APK using volley 【发布时间】:2017-01-28 02:05:54 【问题描述】:

我正在尝试通过网络下载更新。这是最新的凌空版本。我目前使用的是Stringrequest

class UpdateService : IntentService("Update Serivce") 
companion object 
    val VERSION_URL = "<version url>"
    val FILE_URL = "<apk url>"
    val LOG_TAG = "UPDATE"
    fun initialize(context: Context) = context.startService(Intent(context, UpdateService::class.java))


/**
 * Checks remote for an update
 */
override fun onHandleIntent(intent: Intent?) 
    Log.d(LOG_TAG, "Retrieving new version")
    // Get version number
    NetworkService().get(Uri.parse(VERSION_URL),
            Response.Listener  success(it) ,
            Response.ErrorListener 
                Log.d(LOG_TAG, "Failed to update $it.toString()")
                FirebaseCrash.report(it)
            )


private fun success(it: String?) 
    Log.d(LOG_TAG, "Remote version: $it")
    Log.d(LOG_TAG, "Local version: $BuildConfig.VERSION_NAME")

    if (!it.equals(BuildConfig.VERSION_NAME)) 
        Log.d(LOG_TAG, "Fetching new update")
        NetworkService().get(
                Uri.parse(FILE_URL),
                Response.Listener  installUpdate(it) ,
                Response.ErrorListener 
                    Log.d(LOG_TAG, "failed to get new APK")
                    FirebaseCrash.report(it)
                
        )
    


private fun installUpdate(it: String) 
    Log.d(LOG_TAG, "retrieved update")

    val file = File(this.externalCacheDir, "update.apk")

    if(!file.exists())
        file.createNewFile()
    

    file.writeBytes(it.toByteArray())

    val intent = Intent(Intent.ACTION_VIEW)
    intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive")
    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK

    Log.d(LOG_TAG, "Installing")

    startActivity(intent)

启动安装活动时,我会收到来自 android 的解析错误。

如何通过 volley 下载文件并将其保存为可用的 APK?

【问题讨论】:

检查apk的最低版本和你的手机版本 我确实在使用与我用于开发的设备相同的设备。这不是这里的问题。 是签名的apk吗?您是否启用了unknown resources 设置?在某些情况下,如果 apk 文件未正确/完全下载,则可能会发生此错误。 此 APK 已签名,允许使用未知资源。 【参考方案1】:

问题在于目录。我尝试写入缓存目录,然后从那里安装。将目录更改为context.getExternalFilesDir(&lt;Appname&gt;, "update.apk"),它将毫无问题地安装。

【讨论】:

volley的初步了解

...的操作,如文本下载,表现则没有那么好Volley内部仍然是使用的HttpURLConnection和HttpClient进行网络请求的,只是对于不同的Android版本进行了响应的切换,2.3之前使用的HttpCli 查看详情

volley框架

...联动。缺点不适合数据的上传与下载Get和Post请求接口的使用请求对象StringRequest返回结果类型不确 查看详情

如何使用 volley 下载一定数量的 JSON

】如何使用volley下载一定数量的JSON【英文标题】:HowtodownloadcertainamountofJSONusingvolley【发布时间】:2018-06-0501:57:09【问题描述】:有没有办法从JSON下载一定数量的行?我有一个MySQL数据库转换为JSON。JSON数据很大,超过1000行。显... 查看详情

volley2--volley的使用和架构

图片:1.其实RequestQueue里面有两个队列,一个我称为缓存队列mCacheQueue,一个称为网络队列mNetworkQueue如果请求要求加入缓存队列(例如我们给request设置一个属性ShouldCache,然后提供set方法来设置),将会试图从硬盘缓存中获取数据... 查看详情

如何在android开发中高效使用volley网络框架

如何在Android开发中高效使用Volley网络框架什么是VolleyVolley是Google在2013年推出的一个网络框架,他适合做短小的数据拉取和图像拉取与填充准备如果使用AndroidStudio作为开发环境1.下载Volley.jar2.将Volley.jar放在工程目录的libs文件... 查看详情

使用 Volley 和 OkHttp 时如何配置 Http 缓存?

】使用Volley和OkHttp时如何配置Http缓存?【英文标题】:HowtoconfiguretheHttpCachewhenusingVolleywithOkHttp?【发布时间】:2015-07-1312:51:58【问题描述】:我想尝试Volley与OkHttp的结合,但Volley缓存系统和OkHttp都依赖于HTTP规范中定义的HTTP缓存... 查看详情

Android Volley 如何使用 volley 在 POST 请求中发送用户名和密码以及其他参数

】AndroidVolley如何使用volley在POST请求中发送用户名和密码以及其他参数【英文标题】:AndroidVolleyHowtosendusernameandpasswordwithotherparametersinaPOSTrequestusingvolley【发布时间】:2016-11-1209:05:11【问题描述】:我有一个完美运行的curl命令curl-... 查看详情

android逆向修改android的apk安装包内的文件并重新打包(apktool_2.6.0.jar下载和使用|zipalign文件对齐|apksigner签名)(代码片段)

文章目录一、apktool_2.6.0.jar下载和使用二、使用zipalign工具进行对齐操作三、使用apksigner工具进行签名四、完整命令行输出一、apktool_2.6.0.jar下载和使用在https://ibotpeaches.github.io/Apktool/页面下载最新的apktool工具;下载完毕后,使用java... 查看详情

volley框架载入网络图片

Android开发中,载入网络server的图片是非经常常使用的。当然我们能够自己写server接口去实现,只是要做到server性能优越的话,开发起来比較麻烦点。所以本博客要介绍Volley框架进行网络图片载入的demo!Volley框架集成了AsyncHttpClie... 查看详情

使用 volley 库解析 JSON 数据的问题

】使用volley库解析JSON数据的问题【英文标题】:ProbleminparsingJSONdatausingvolleylibrary【发布时间】:2020-12-2411:13:25【问题描述】:这是一个从Internet获取JSON数据的简单程序。answerWithAsyncTask()是一个接口,确保所有下载的数据只有在... 查看详情

android怎么获取刚刚下载安装的apk的app名字和图片

从网上下载并安装了APK文件,想要获取它的文件名和默认的图片,该怎么拿到,并放入ListView列表中显示用intentfilter获取安装的apk包名,在BroadcastReceiver里面就可以拿到安装的包名和APP,等基本信息,再利用packageManager的功能就可能放... 查看详情

如何在android开发中高效使用volley网络框架

如何在Android开发中高效使用Volley网络框架什么是VolleyVolley是Google在2013年推出的一个网络框架,他适合做短小的数据拉取和图像拉取与填充准备如果使用AndroidStudio作为开发环境1.下载Volley.jar2.将Volley.jar放在工程目录的libs文件... 查看详情

Fragment、Volley 和 RecyclerView

...助我解决我的问题。我有3个选项卡的android应用程序,我使用片段,第一个选项卡是recyclerView列表,第二个选项卡是地图。问题出在选项卡1中,我需要使用volley将数据获取到选项卡1上的recyclerView,如 查看详情

volley框架的使用

...资料和视频之后,感觉用了Volley之后代码反而更简单了。使用起来也不难:StringRequest的用法:只要三步就可以了。当然首先你要先导入Volley的jar包或者Volley的项目。然后需要在Manifest文件中加入访问网络的权限<uses-permissionandro... 查看详情

volley网络框架完全解析(使用篇)

...xff1a;HttpURLConnection和HttpClient(Apache),我们在使用时一般都会对它们进行一系列的封装,但是这过程不免有些繁琐,所以,Google官方也考虑到了这点,在2013年GoogleI/O大会上就推出了一个新的网络请求框... 查看详情

Android volley 如何使用身份验证标头和正文中的 Json 对象发送请求

】Androidvolley如何使用身份验证标头和正文中的Json对象发送请求【英文标题】:AndroidvolleyHowtosendrequestwithbothauthentificationheadersandJsonobjectinbody【发布时间】:2013-11-2613:46:57【问题描述】:我需要通过volley发送一个http请求,其中包... 查看详情

使用 GSON 和 Volley 在 Android 上显示 JSON 数据

】使用GSON和Volley在Android上显示JSON数据【英文标题】:DisplayJSONdataonAndroidusingGSONandVolley【发布时间】:2017-06-3008:36:39【问题描述】:您好,我是android编程新手,正在努力学习它。我遵循this教程,它工作正常,但是我不知道如何... 查看详情

使用 Volley 和没有 HttpEntity 的工作 POST 多部分请求

】使用Volley和没有HttpEntity的工作POST多部分请求【英文标题】:WorkingPOSTMultipartRequestwithVolleyandwithoutHttpEntity【发布时间】:2015-11-2107:01:51【问题描述】:这不是一个真正的问题,但是,我想在这里分享一些我的工作代码,以供您... 查看详情