业务逻辑:在工作种遇到这种需求,就是打开第三APP。
但是这个时候要确保这个APP有没有在本地TV上。所以,就要 检测有没安装,没有安装就下载安装。
1,检测 APP 是否安装。


  /**     * 检测 APP是否已安装。     *     * @param context 当前上下文     * @param packageName 包名     * @return     */public static boolean isAvilible(Context context, String packageName) {        final PackageManager packageManager = context.getPackageManager();        List packageInfos = packageManager.getInstalledPackages(0);        List packageNames = new ArrayList();        if (packageInfos != null) {            for (int i = 0; i < packageInfos.size(); i++) {                String packName = packageInfos.get(i).packageName;                packageNames.add(packName);            }        }        // 判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE        return packageNames.contains(packageName);    }

2,

                if (true != isInstallAPP) {//没有就下载                                        downLoadApp(‘你的下载路径’, ‘APP的名字’ + ".apk");                                    } else {                                        //有的话就直接打开                                        PackageManager packageManager = getPackageManager();                                        Intent intent = packageManager.getLaunchIntentForPackage(games.get(position).getPackageName());  //com.xx.xx是我们获取到的包名                                        startActivity(intent);                                    }

3,下载的代码。这里用的是OKGO框架。

/**     * APP下载     *     * @param url 下载路径     * @param fileName APP名字     */    public void downLoadApp(String url, final String fileName) {        OkGo.get(url)                .tag(this)                .execute(new FileCallback(fileName) {                    @Override                    public void onStart(Request request) {                        super.onStart(request);                        Log.e("downloadProgress: ", "NONE" + Progress.NONE);                        showDialog();                    }                    @Override                    public void onSuccess(Response response) {//sdcard/download/ 默认下载路径                        Intent intent = new Intent(Intent.ACTION_VIEW);                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                        intent.setDataAndType(                                Uri.fromFile(new File("/mnt/sdcard/Download/" + fileName)),                                "application/vnd.android.package-archive");                        Log.e("包路径---", "/mnt/sdcard/Download/" + fileName);                        hud.dismiss();                        startActivity(intent);//下载完后 启动应用。                    }                    @Override                    public void downloadProgress(Progress progress) {                        super.downloadProgress(progress);//                            dialog.setPRo((int) progress.fraction);                    }                    @Override                    public void onFinish() {                        super.onFinish();                    }                });    }

记个笔记,防止忘记。

更多相关文章

  1. android sdk 让SDK Manager来自动安装上面下载的文件
  2. android SDK安装问题
  3. [置顶] android Listview分批加载+自动加载(改进版)(附源码下载)
  4. Android(安卓)Studio安装使用教程
  5. Android断点续传原理
  6. Android开发之
  7. Android下载apk文件并安装
  8. 课程实践 1: 制作第一个 Android(安卓)App
  9. android学习——NDK入门 windows下安装cygwin 与 Eclipse使用CDT

随机推荐

  1. Android(安卓)APP中跳转至微信,分享图文给
  2. 【Android】1.6版本所有权限
  3. 利用 ZXing Android Embedded 实现二维码
  4. Android一些开源第三方
  5. Android简单版天气预报,显示天气预报(第二
  6. BroadcastReceiver总结
  7. android 混淆器(ProGuard)
  8. Android IPC 通讯机制源码分析 一
  9. zoomcontrols一直显示
  10. android管理联系人操作