美文网首页
Android版本更新下载apk自动安装的方法

Android版本更新下载apk自动安装的方法

作者: 小牛的回忆 | 来源:发表于2018-04-11 09:04 被阅读0次

    程序中XXXX部分和//TODO部分根据具体项目进行修改和完善。

    public class UpdateHelper {
        private static final String TAG = "UpdateHelper";
        private static final String FILE_PROVIDER_AUTHORITY = "XXXX";
        private static final String DATA_AND_TYPE = "application/vnd.android.package-archive";
        private static final String UPDATE_URL = "XXXX";
    
        public static boolean checkForUpdated(Context context) {
            boolean updated = false;
            try {
                int currentVersion = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode;
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
           //TODO 获取服务端最新版本号,与currentVersion做比较
            return updated;
        }
    
        public static void autoInstallUpdate(final Context context) {
            OkGo.<File>get(UPDATE_URL).tag(context).execute(new FileCallback() {
                @Override
                public void onSuccess(Response<File> response) {
                    File file = response.body();
                    setPermission(file.getPath());
                    installApk(context, file.getPath());
                }
    
                @Override
                public void onError(Response<File> response) {
                    super.onError(response);
                    //TODO 网络请求出错
                }
    
                @Override
                public void onFinish() {
                    super.onFinish();
                    //TODO 网络请求结束
                }
    
                @Override
                public void downloadProgress(Progress progress) {
                    super.downloadProgress(progress);
                    int fraction = (int) (progress.fraction * 100);
                    //TODO 下载中,显示下载进度
                }
            });
        }
    
        private static void installApk(Context context, String apkPath) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            File file = new File(apkPath);
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {
                Uri apkUri = FileProvider.getUriForFile(context, FILE_PROVIDER_AUTHORITY, file);
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                intent.setDataAndType(apkUri, DATA_AND_TYPE);
            } else {
                Uri apkUri = Uri.fromFile(file);
                intent.setDataAndType(apkUri, DATA_AND_TYPE);
            }
            context.startActivity(intent);
        }
    
        private static void setPermission(String filePath) {
            String command = "chmod " + "777" + " " + filePath;
            Runtime runtime = Runtime.getRuntime();
            try {
                runtime.exec(command);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Android版本更新下载apk自动安装的方法

          本文链接:https://www.haomeiwen.com/subject/lodnhftx.html