package com.orangewealth.orangeclient.manager;import android.app.ProgressDialog;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.pm.PackageInfo;import android.graphics.Paint;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.widget.Toast;import java.io.BufferedInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;/**  * Created by yangyang on 4/11/16.  */ public class DownPackageManager {    private static final String TAG=DownPackageManager.class.getSimpleName();    private static DownPackageManager instance;    private DownPackageManager(){    }    private static DownPackageManager getInstance(){        if(instance==null){            instance=new DownPackageManager();        }        return instance;    }    //下载文件  public static File  getFileFromSercer(String path,ProgressDialog pd) throws Exception{        if(Environment.getExternalStorageState().equals((Environment.MEDIA_MOUNTED))){            String apkFile = Uri.parse(path).getLastPathSegment()+".apk";            URL url=new URL(path);            HttpURLConnection conn=(HttpURLConnection)url.openConnection();            conn.setConnectTimeout(5000);            pd.setMax(conn.getContentLength());            InputStream is=conn.getInputStream();            File file=new File(Environment.getExternalStorageDirectory(),apkFile);            FileOutputStream fos=new FileOutputStream(file);            BufferedInputStream bis=new BufferedInputStream(is);            byte[] buffer =new byte[1024];            int len;            int total=0;            while ((len=bis.read(buffer))!=-1){                fos.write(buffer,0,len);                total+=len;                //  pd.setProgress(total);            }            fos.close();            bis.close();            is.close();            return file;        }else {            return null;        }    }    //安装指定文件的包  public static void installApk(Context context, File file){        Intent intent=new Intent();        intent.setAction(Intent.ACTION_VIEW);        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");        context.startActivity(intent);    }    //根据包名判断安装包是否安装  public static boolean isAppInstalled(Context c,String packgename){        PackageInfo packageinfo;        try{            packageinfo=c.getPackageManager().getPackageInfo(packgename,0);        }catch (Exception e){            packageinfo=null;            e.getStackTrace();        }        if (packageinfo == null) {            //System.out.println("没有安装");  return false;        } else {            //System.out.println("已经安装");  return true;        }    }    //下载APK  public static void downLodeApk(final Context context,final String url){        final ProgressDialog pd;        pd=new ProgressDialog(context);        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        pd.setMessage("正在下载应用");        pd.show();        pd.setCanceledOnTouchOutside(false);        // 因为新启的线程,所以要是final  new Thread(){            @Override            public void run(){                try{                    File file=getFileFromSercer(url, pd);                    installApk(context,file);                    pd.dismiss();                }catch (Exception e){                    Toast.makeText(context.getApplicationContext(), "下载新版本失败", Toast.LENGTH_SHORT).show();                }            }        }.start();    }    // 根据下载地址打开APK  public static void openApk( Context c,String packagenaem,Bundle bundle,String activity,String url){        if(isAppInstalled(c,packagenaem)){            Intent i=new Intent();            ComponentName cn=new ComponentName(packagenaem,activity);            i.setComponent(cn);            i.putExtras(bundle);            c.startActivity(i);        }else {//未安装  downLodeApk(c,url);        }    }}

更多相关文章

  1. Android拍照功能
  2. android 编译 release 签名
  3. Android(安卓)Handler简单例子
  4. Android(安卓)Studio的安装,史上最详细(超多图)!!
  5. android studio mac_最新Mac安装Flutter全过程
  6. Android(安卓)NDK 开发教程一:安装NDK
  7. (原创)Android入门教程(六)之------使用android SDk帮助文档(英
  8. 英特尔® Android* USB 驱动程序安装指南
  9. Eclipse SDK 3.7.2无法安装android SDK

随机推荐

  1. 实现Android包的批量删除
  2. 移植android的工作环境
  3. 整理:RelativeLayout的相关属性
  4. Android(安卓)带有角标的imageview,类似于
  5. 2015-10-30-02-Android(安卓)Theme主题使
  6. Android关于cpu/cpuset/schedtune的应用
  7. Android(安卓)基于UDP的Socket通信
  8. Android: android sensors, HAL范例
  9. Android:interpolator用法
  10. Android设置TextView字间距与行间距