安卓-下载服务器的apk文件程序出现异常

问题描述

下载服务器的apk文件程序出现异常




代码如下:
public class AsyncTaskTestActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_async);
}

private File apkFile;
private ProgressDialog dialog;

public void downloadApk(View v) {
    //启动异步任务处理
    new AsyncTask<Void, Integer, Void>() {

        //1. 主线程, 显示提示视图
        protected void onPreExecute() {
            dialog = new ProgressDialog(AsyncTaskTestActivity.this);
            dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            dialog.show();

            //准备用于保存APK文件的File对象 : /storage/sdcard/Android/package_name/files/xxx.apk
            apkFile = new File(getExternalFilesDir(null), "update.apk");

        }

        //2. 分线程, 联网请求
        @Override
        protected Void doInBackground(Void... params) {
            try {
                //1. 得到连接对象
                String path = "http://172.16.12.8:8080/Web_Server/App10_animation.apk";
                URL url = new URL(path);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                //2. 设置
                //connection.setRequestMethod("GET");
                connection.setConnectTimeout(5000);
                connection.setReadTimeout(10000);
                //3. 连接
                connection.connect();
                //4. 请求并得到响应码200
                int responseCode = connection.getResponseCode();
                if(responseCode==200) {
                    //设置dialog的最大进度
                    dialog.setMax(connection.getContentLength());

                    //5. 得到包含APK文件数据的InputStream
                    InputStream is = connection.getInputStream();
                    //6. 创建指向apkFile的FileOutputStream
                    FileOutputStream fos = new FileOutputStream(apkFile);
                    //7. 边读边写
                    byte[] buffer = new byte[1024];
                    int len = -1;
                    while((len=is.read(buffer))!=-1) {
                        fos.write(buffer, 0, len);
                        //8. 显示下载进度
                        //dialog.incrementProgressBy(len);
                        //在分线程中, 发布当前进度
                        publishProgress(len);

                        //休息一会(模拟网速慢)
                        //Thread.sleep(50);
                        SystemClock.sleep(50);
                    }

                    fos.close();
                    is.close();
                }
                //9. 下载完成, 关闭, 进入3)
                connection.disconnect();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        //3. 主线程, 更新界面
        protected void onPostExecute(Void result) {
            dialog.dismiss();
            installAPK();
        }

        //在主线程中更新进度(在publishProgress()之后)
        protected void onProgressUpdate(Integer[] values) {
            dialog.incrementProgressBy(values[0]);
        }
    }.execute();

    //int Integer float Float void Void
}

/**
 * 启动安装APK
 */
private void installAPK() {
    Intent intent = new Intent("android.intent.action.INSTALL_PACKAGE");
    intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
    startActivity(intent);
}

}

解决方案

网络不好吧~重下啊!

时间: 2024-08-19 22:28:51

安卓-下载服务器的apk文件程序出现异常的相关文章

apk访问下载-C#实现的一个.apk下载界面,用手机能下载不能安装.apk文件。

问题描述 C#实现的一个.apk下载界面,用手机能下载不能安装.apk文件. C#实现的一个.apk下载界面,在电脑访问下载下来的程序,可以安装,但是在手机上访问下载下来的文件不能安装.出现解析包时出现问题.

安卓手机怎样安装apk文件

1.我们先随便下载一个apk文件的文件保存在你的电脑桌面或其它地方只要你能记住位置就可以了. 2.然后再电脑中安装一个"豌豆荚"软件,如果没有百度搜索"豌豆荚"直接下载到电脑并安装,然后再把手机连接电脑,然后等待豌豆荚自动把手机和豌豆荚连接在一起 3.接着我们在豌豆荚界面中找到"应用和游戏管理"如下图所示 4.在应用和游戏管理中我们点击"安装新应用"如下图所示 5.在这里我们会看到有一个"添加文件"点击,然

如何通过javascript代码下载服务器上的文件?

问题描述 各位高手:请教个问题,我的服务器的虚拟目录下有个Excel文件,我如何通过javascript代码,弹出下载对话框来下载该文件?谢谢!!

下载服务器上的文件 利用 webservice 问题

问题描述 服务端webservice代码[WebMethod]publicbyte[]downFile(stringfileName){stringj1,j2,filepath;j1=Server.MapPath("");j2=@"Video"+fileName;filepath=j1+j2;//服务器端的文件路径和文件FileStreamfs=null;byte[]bb=newbyte[0];if(File.Exists(filepath)){fs=newFile

如何在 Linux 上从 Google Play 商店里下载 apk 文件

假设你想在你的 Android 设备中安装一个 Android 应用,然而由于某些原因,你不能在 Andord 设备上访问 Google Play 商店(LCTT 译注:显然这对于我们来说是常态).接着你该怎么做呢?在不访问 Google Play 商店的前提下安装应用的一种可能的方法是,使用其他的手段下载该应用的 APK 文件,然后手动地在 Android 设备上 安装 APK 文件. 在非 Android 设备如常规的电脑和笔记本电脑上,有着几种方式来从 Google Play 商店下载到官

wi-fi-android app 4G与wifi下载同一个url的文件,内容不一样是为什么?

问题描述 android app 4G与wifi下载同一个url的文件,内容不一样是为什么? 在apk检测更新后,下载服务器最新apk,4G下的话 会下载以前旧版本的apk(当然就不能覆盖安装了正常升级了),而用wifi下就没问题,会下载到最新的apk,这是为什么?同一个URL啊明明 解决方案 不同的网络,转到的最终服务器可能不一样,这要看一下后台服务器是如何处理的 解决方案二: android 判断当前联网类型是2g,3g,4g,wifi还是其他

服务器文件下载到本地-在Weblogic服务器上生成文件怎么直接下载到本地,不通过SFTP,ftp等客户端程序?

问题描述 在Weblogic服务器上生成文件怎么直接下载到本地,不通过SFTP,ftp等客户端程序? 如题,我是把Weblogic服务器数据导入到Excel表格里然后下载下来,在tomcat下直接能下载下来,但是部署到weblogic上 下载的文件显示损坏,打不开. 有没有谁会解决这个问题,或者给个新的方法呢?

pdf-android 如何在程序内打开从服务器下载下来的PDF文件

问题描述 android 如何在程序内打开从服务器下载下来的PDF文件 客户有个需求就是在程序内要打开PDF文件,但是不能调用第三方的软件.必须在程序内打开. webService会回传一个ftp的url,然后去下载下来,再用程序打开(不能利用第三方软件). 我之前在网上找到一个开源的,是将PDF发到谷歌提供的一个API,然后用用webView来显示.但是客户反映有些页面显示不出来,要我再换一个. 我刚做android没多久,这坑爹的需求好难搞啊,谁做过类似的,可以教下我吗? 万分感谢~ 解决方

安卓模拟器上安装卸载apk文件教程

安卓模拟器是一个能在Windows平台模拟安卓手机系统的模拟器.安卓模拟器能在电脑上模拟出安卓手机运行环境,让你在电脑上也能体验安卓游戏和应用. 如果我们想要运行一些程序,但又不想在自己的手机上运行,当然就可以在安卓模拟器上实验一下啦,一起来看一下 首先确保自己的电脑上安装有模拟器,安装前要配置JDK,下载ADT和SDK还有eclipse软件. 我们打开自己的模拟器,如图 我现在想要安装一个Yoo桌面的软件,我从网上下载了一个Yoo桌面的apk文件.注意文件的后缀一定要是apk. 为了后面再命令