一、简介
嘿嘿,这周没缺席,继续给大伙们提供一个工具类。用于下载APK,安装应用。几乎每个APP都带有这个功能,通过链接下载APK后,进行安装升级应用。如果要自己重新写的话 ,可能要花半个或一个多小时。不过写过一遍后,下次实现起来就简单许多了。所以嘛,作者就做了这个简单封装类。你们只需CP,不说三分钟搞定,但也可以少走很多弯路。
二、效果预览
话再多,还不如先看看效果。适不适合自己的胃口,好吃的话可以点个赞。
三、实现步骤
(1)检查权限/申请权限
这里使用LinPermission个人封装的权限工具类,这里就不解释了,不是本章主要内容。你们可以使用自己的权限进行替换。
(2)提示更新
可以使用Dialog,也可以使用作者封装好的LinCustomDialogFragment
(3)调用工具类进行下载安装
//1.检查存储权限
if (LinPermission.checkPermission(activity, 7)) {
//2.弹窗提示
LinCustomDialogFragment.init().setTitle("发现新版本")
.setContent("是否更新?")
.setType(LinCustomDialogFragment.TYPE_CANCLE)
.setOnClickListener(new LinCustomDialogFragment.OnSureCancleListener() {
@Override
public void clickSure(String EdiText) {
//3.下载安装
LinDownloadAPk.downApk(activity, Constants.InstallApk);
}
@Override
public void clickCancle() {
}
}).show(getFragmentManager());
} else {
//申请存储权限
LinPermission.requestPermission(activity, 7);
}
LinDownloadAPk.class
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Environment;
import android.provider.Settings;
import android.support.annotation.RequiresApi;
import android.support.v4.content.FileProvider;
import android.view.View;
import android.widget.RemoteViews;
import android.widget.Toast;
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.SocketTimeoutException;
import java.net.URL;
import blcs.lwb.lwbtool.R;
/**
* 下载工具类(开发中一般用于APK应用升级)
*/
public class LinDownloadAPk
{
private static int FILE_LEN = 0;
private static RemoteViews mNotifiviews;
public static String APK_UPGRADE = Environment
.getExternalStorageDirectory() + "/DownLoad/apk/BLCS.apk";
private static PendingIntent nullIntent;
private static Context mContext;
/**
* 判断8.0 安装权限
*/
public static void downApk(Context context, String url) {
mContext = context;
if (Build.VERSION.SDK_INT >= 26) {
boolean b = context.getPackageManager().canRequestPackageInstalls();
if (b) {
downloadAPK( url, null);
} else {
//请求安装未知应用来源的权限
startInstallPermissionSettingActivity();
}
} else {
downloadAPK( url, null);
}
}
/**
* 开启安装APK权