实现APP下载安装包,下载完成自动弹出安装页面,兼容安卓6.0以下及7.0
一. 找到android\app\src\main\java\com\XXX\ ,其中XXX为包名,其文件夹下有MainApplication.java与MainActivity.java两个文件,新建三个文件:
- DownloadApk.java
package com.XXX; // XXX为包名,与MainApplication.java或MainActivity.java的保持一致即可
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.content.Context;
import android.app.Activity;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Environment;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
public class DownloadApk extends ReactContextBaseJavaModule {
public static String description;
DownloadManager downManager;
Activity myActivity;
public DownloadApk(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "DownloadApk";
}
@ReactMethod
public void downloading(String url, String description) {
DownloadApk.description = description;
myActivity = getCurrentActivity();
downManager = (DownloadManager)myActivity.getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(url);
DownloadManager.Request request = new Request(uri);
// 设置允许使用的网络类型,这里是移动网络和wifi都可以
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
//设置通知栏标题
request.setNotificationVisibility(Request.VISIBILITY_VISIBLE);
request.setMimeType("application/vnd.android.package-archive");
request.setTitle("下载");
if (description == null || "".equals(description)) {
description = "目标apk正在下载";
}
request.setDescription(description);
request.setAllowedOverRoaming(false);
// 设置文件存放目录
request.setDestinationInExternalFilesDir(myActivity, Environment.DIRECTORY_DOWNLOADS,</