2 leaf 130 leaf_130 于 2016.03.16 18:38 提问

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

图片说明
图片说明
图片说明
代码如下:
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);
}

}

1个回答

lengcj
lengcj   2016.03.16 20:02

网络不好吧~重下啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
解决IIS服务器不能下载.apk文件!
随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件,那么怎么才能让IIS支持.apk文件的下载呢? IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载。 IIS服务器不能下载.apk文件
解决 打包成功后的apk安装后点击进入程序报"程序异常"然后闪退的错误
(1)请把apk解压开去assets/systemTemplate/apps/,检查里面有没有以entryAppId命名的文件。如果没有文件,请去build.properties里面检查entryAppId是否配置正确,去打包环境的apps下面去检查是否含有entryAppId命名的部署包.         (2)如果以上没有问题,那应该是首页代码出错了,请注释代码定位问题.
把.apk传到网站服务器下载
刚刚解决的一个问题,做好的apk上传到服务器,通过访问链接下载apk。 解决方法:设置IIS的MIME类型,让IIS web下载支持包括APK等文件在内的多文件类型 1.打开IIS网站,右键属性,找到HTTP头,找到MIME类型     点击新建,加上扩展名,.apk,然后下面类型写  application/vnd.android.package-archive   这样用androi
关于android中版本自动更新,从服务器下载下来的文件不能安装的问题
很多时候,由于我们不注意从服务器下载下来的更新包的APK文件不能安装。 可能原因  1、APK最低版本不支持当前设备   2、APK安装包签名不一致   3、正式本文要说的,也是程序猿可能会经常犯的错误 通常我们在写从服务器上下载文件的代码的时候一般都是这么写 URL url=new URL(surl); con
如何把App放在服务器上供用户下载
有时候做了个简单的App想把App给朋友帮忙测试一下,却发现上传到各种平台很麻烦,肿么办?难道一个个拷贝,那也太low啦,不是咱程序员该干的事儿,好的话不多说,开搞!!! 步骤如下: 安装Tomcat 进入Apache Tomcat官网,点击download进行下载 将下载下来的文件进行解压 在bin目录下,运行startup.bat,启动tomcat服务! 把Apk文件放在webapps/ro
Node.js实现android的apk版本更新服务器
以下内容仅为android程序员自己测试时搭建的简单测试服务器。 根据一般apk升级步骤: 1. 请求服务器versionCode和本地apk的versionCode比对,如果服务器versionCode大于apk的versionCode,则执行2),否则结束; 2. 弹出对话框,告知用户有新的版本可以更新,用户点击更新,则执行3)开始下载apk,否则结束; 3. 后台下载最新版本的apk。
Android下载apk文件并安装
在Andrdoid程序中常常会有一个版本更新的功能,它的实现非常简单,就是讲新版本的apk文件上传到服务器,然后修改服务器中的版本号,这样当用户点击版本更新的时候就可以下载新版本的apk文件了,下面说一下是如何下载并安装apk文件的: public class UpdateActivity extends AppCompatActivity { private Button bu
如何设置让iis服务器支持.apk文件的下载
随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件,那么怎么才能让IIS支持.apk文件的下载呢? IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载。 IIS服务器不能下载.apk文件的解决办
让WIN2003和2008服务器iis支持安卓应用.apk文件下载的配置方法
让WIN2003和2008服务器iis支持安卓应用.apk文件下载的配置方法
让服务器apache/iis/nginx支持.apk/ipa文件下载
文章来源:http://www.cnblogs.com/wanghetao/p/3978684.html 服务器iis支持.apk文件下载的设置 IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载。 IIS服务器不能下载.apk文件的解决办法:既然.apk无法下载是因为没有MIME,那么添加一个MIME类型就可以了。 IIS服务器不能下载.