Android 中实现点击下载跳转其他APK功能

开发过程中肯定会遇到这样的一个功能:点击图标下载apk,安装后实现功能跳转,现简单记录一下,以防以后用上。

1、先判断当前手机或者平板有没有安装该apk

    /**
     * 判断有没有安装该apk
     * @param packageName
     * @param context
     * @return
     */
    public static boolean isAvilible(String packageName,Context context) {
        final PackageManager packageManager = context.getPackageManager();
        // 获取所有已安装程序的包信息
        List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
        for (int i = 0; i < pinfo.size(); i++) {
            if (pinfo.get(i).packageName.equalsIgnoreCase(packageName))
                return true;
        }
        return false;
    }

2、复制assert目录下的apk到sd卡中(该方式实现的是:要下载的apk先放到assert目录下)

/**
     * 复制assert目录下的apk到sd卡中
     * @param context
     * @param apkName
     * @return
     */
    public static boolean copyApkFromAssets(Context context,String apkName) {
        String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+apkName;
        boolean copyIsFinish = false;
        try {
            InputStream is = context.getAssets().open(apkName);
            File file = new File(path);
            file.createNewFile();
            FileOutputStream fos = new FileOutputStream(file);
            byte[] temp = new byte[1024];
            int i = 0;
            while ((i = is.read(temp)) > 0) {
                fos.write(temp, 0, i);
            }
            fos.close();
            is.close();
            copyIsFinish = true;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return copyIsFinish;
    }

3、提示用户是否要安装

 /**
     * 弹窗提示用户安装与否
     * @param apkName
     */
    private void showInstallApkOrNo(final String apkName){
        if (AppUtils.copyApkFromAssets(getActivity(), apkName)) {
            Dialog builder = new AlertDialog.Builder(getActivity())
                    .setIcon(R.drawable.ic_launcher)
                    .setMessage("是否安装?")
                    .setNegativeButton("取消", null)
                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Intent intent = new Intent(Intent.ACTION_VIEW);
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+apkName), "application/vnd.android.package-archive");
                            getActivity().startActivity(intent);
                        }
                    })
                    .create();
            builder.show();
        }
    }

4、实现功能跳转

private void jumpToIntegrationFunction(int position){
        String apkName = "app-release.apk";
        String packageName = "com.tecsun.tsb.integration.hubei";
        String srcActivity = "com.tecsun.tsb.integration.hubei.activity.MainActivity";
        
        if ( !AppUtils.isAvilible( packageName , getActivity( ) ) ){
//          LogUtils.v( "com.tecsun.tsb.integration.hubei not installed" );
//          return;
            showInstallApkOrNo(apkName);
            return;
        }
        
        int type = -1;
        if ( position == 0 ) {
            type = TQ_APPLY;
        }
        if ( position == 11 ) {     
            type = TQ_INTRODUCE;
        }
        if ( type > 0 ) {
            Intent intent = new Intent( );
            srcActivity = packageName + ".activity.MainActivity";
            ComponentName componentName = new ComponentName( packageName ,
                    srcActivity );
            intent.setComponent( componentName );
            intent.putExtra( "type" , type );
            intent.putExtra( "TOKEN_ID" , AppApplication.TOKEN_ID );
            intent.setAction( srcActivity );
            getActivity( ).startActivity( intent );
            return;
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容