package com.example.wx;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ProgressBar;

public class MainActivity extends Activity {
    /* 进度条与通知ui刷新的handler和msg常量 */
    private ProgressBar mProgress;
    private static final int DOWN_UPDATE = 1;
   
    private static final int DOWN_OVER = 2;
   
    private int progress;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mProgress = (ProgressBar)findViewById(R.id.pd);
        new updata().start();
    }

class updata extends Thread{
     public void run() {
   try {
    URL url = new URL("http://softfile.3g.qq.com:8080/msoft/179/24659/43549/qq_hd_mini_1.4.apk");
   
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    conn.connect();
    int length = conn.getContentLength();
    InputStream is = conn.getInputStream();
    
    File file = new File("/sdcard/updatedemo/");
    if(!file.exists()){
     file.mkdir();
    }
    //String apkFile = "/sdcard/updatedemo/"+"test.apk";
    //File ApkFile = new File(apkFile);
    //FileOutputStream fos = new FileOutputStream(ApkFile);
    FileOutputStream fos = openFileOutput("test.apk", MODE_WORLD_READABLE);
    int count = 0;
    byte[] buffer = new byte[1024];
    int mylength = 0;
    Log.d("开始下载","开始下载");
    while ((mylength = is.read(buffer)) != -1) {
     fos.write(buffer,0,mylength);
    }
    fos.close();
    is.close();
    mHandler.sendEmptyMessage(DOWN_OVER);

} catch (MalformedURLException e) {
    e.printStackTrace();
   } catch(IOException e){
    e.printStackTrace();
   }
   
  }
    }
    private void installApk(){
  File apkfile = new File(getFilesDir(), "test.apk");
  Log.d("文件路径", apkfile.toString());
        if (!apkfile.exists()) {
            //return;
            Log.d("存儲失敗", "存储失败");
            return;
        }   
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setDataAndType(Uri.fromFile(apkfile), "application/vnd.android.package-archive");
        this.startActivity(i);
 
 }
   
    private Handler mHandler = new Handler(){
     public void handleMessage(Message msg) {
      switch (msg.what) {
   case DOWN_UPDATE:
    
    break;
   case DOWN_OVER:
    mProgress.setVisibility(View.GONE);
    installApk();
    break;
   default:
    break;
   }
     };
    };
   
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

系统目录APK更新——权限问题的更多相关文章

  1. APK更新集成实践

    任务目标:将内网APK打包后最新下载链接.更新时间.更改日志显示在一个我自己制作的APP里 任务作用:我们在内网测试时更新下载APK更加便捷,并且能够清楚目标APK的版本情况,回归.验证做到有的放矢 ...

  2. Android : 添加apk私有权限

    一.Android的系统权限: apk在安装时,Android 为每个软件包提供唯一的 Linux 用户 ID.此 ID 在软件包在该设备上的使用寿命期间保持不变.在不同设备上,相同软件包可能有不同的 ...

  3. 【转】tomcat搭建本地服务器 实现apk更新下载

    转自:http://www.kankanews.com/ICkengine/archives/121748.shtml 做apk的更新下载功能,测试的时候需要个服务器. 所以就选用 Apache To ...

  4. android APK更新

    菜鸟的博客请多多指教 最近做了一个新功能,更新APK的功能 1.更新APK是一个耗时的任务,我采用了一个服务来做,上次在网上看到服务是在主线程里面,自己也测试了下,数据是真的 所以下载动作还必须在服务 ...

  5. Android O 获取APK文件权限 Demo案例

    1. 通过 aapt 工具查看 APK权限 C:\Users\zh>adb pull /system/priv-app/Settings . /system/priv-app/Settings/ ...

  6. Android /data/data/app_file/目录下面安装apk无权限问题

    当识别SDCard的时候 String filePath = null; String state = Environment.getExternalStorageState(); if (state ...

  7. Linux主机系统目录误操作权限修改为777修复方法

    ECS Linux中,如果意外误操作将/目录权限批量设置,比如chmod -R 777 / ,系统中的大部分服务以及命令将无法使用,这时候可以通过系统自带的getfacl命令来拷贝和还原系统权限,修复 ...

  8. react-native 打包apk 更新js和常见问题

    1.打包发布 a.在工程根目录执行如下命令 打包js资源文件 react-native bundle --platform android --dev false --entry-file index ...

  9. Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)

    一.通过Intent消息机制发送消息,调用系统应用进行,实现apk的安装/卸载 . (1) 调用系统的安装应用,让系统自动进行apk的安装 String fileName = "/data/ ...

随机推荐

  1. vim使用方法:

    vim使用方法: 模式: 编辑模式.未编辑模式.命令行模式 i 插入形式进入编辑模式 a 增加 o 下行编辑 O 上行插入 : 进入命令行模式 esc 退出编辑模式 wq 保存文件 yy 复制 p 粘 ...

  2. SpringCloud组件和概念介绍1

    一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及 ...

  3. a标签伪类的LOVE HATE原则

    a标签伪类的LOVE HATE原则 a标签有四个伪类,分别是: a:link 未访问的链接 a:visited 已访问的链接 a:hover 鼠标移动到链接上 a:active 选定的链接 遇到的问题 ...

  4. malloc、free、new、delete

    一.C语言中不定大小多维数组的处理: 如果要给二维数组(m*n)分配空间,代码可以写成下面: char **a, i; // 先分配m个指针单元,注意是指针单元 // 所以每个单元的大小是sizeof ...

  5. php页面的基本语法

    概述: 1. PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器. 2. PHP 脚本以 <?php 开始,以 ?> 结束,可以放到文档中的任何位置. 3. 当 PHP 解析 ...

  6. 使用VisualSVN Server搭建SVN服务器[xyytit]

    使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和 Apache相配合来实现源代码的 SVN管理简单的多,上手也没有那么复杂. 下面就看看详细的说明 Visual ...

  7. oracle 将逗号分隔的字符串转成多行记录

    , rownum), length(, rownum, length(replace('a,b,c,d', ',', '')), length('a,b,c,d') from dual connect ...

  8. 对.NET中导出数据到EXCEL的几种方法探讨

    最近在做一个报表系统的时候,需要把DATASET中的数据导到EXCEL当中,于是在网上找了一遍,发现了好几种方法,本来以为应该差不多,但后来经过一一试用后,发现在性能上真的差别很大,现在就介绍一下,同 ...

  9. ViewPager 带动画的欢迎界面

    一般APP进去之后都会有几张图片来导航,这里就学习怎么在这张图片切换的时候添加切换动画效果 先看布局文件 activity_main.layout <?xml version="1.0 ...

  10. 修改mysql数据库 允许远程访问

    首先使用root身份进入MySQL mysql>use mysql; //进入mysql表 mysql> selecthost,user from user;  //查看结果是不是root ...