简单的完成了下
This commit is contained in:
parent
87e3b5c745
commit
fb76859f71
@ -0,0 +1,44 @@
|
|||||||
|
package top.jerryyan.RN.A.VersionUpgrade;
|
||||||
|
|
||||||
|
import android.app.DownloadManager;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.database.Cursor;
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class DownLoadBroadcastReceiver extends BroadcastReceiver {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
long currentDownloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
|
||||||
|
SharedPreferences sPreferences = context.getSharedPreferences("jerry_rn_a_version_upgrade", 0);
|
||||||
|
long refernece = sPreferences.getLong("downloadId", 0);
|
||||||
|
if (currentDownloadId == refernece) {
|
||||||
|
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||||
|
Intent install = new Intent(Intent.ACTION_VIEW);
|
||||||
|
DownloadManager.Query queryById = new DownloadManager.Query();
|
||||||
|
queryById.setFilterById(currentDownloadId);
|
||||||
|
Cursor downloadCursor = downloadManager.query(queryById);
|
||||||
|
String filePath = null;
|
||||||
|
if(downloadCursor.moveToFirst()){
|
||||||
|
if(downloadCursor.getInt(downloadCursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL){
|
||||||
|
int fileNameIdx = downloadCursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);
|
||||||
|
filePath = downloadCursor.getString(fileNameIdx);
|
||||||
|
}else{
|
||||||
|
downloadManager.remove(currentDownloadId);
|
||||||
|
downloadCursor.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
downloadCursor.close();
|
||||||
|
}
|
||||||
|
if(filePath == null) return;
|
||||||
|
File file = new File(filePath);
|
||||||
|
install.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
|
||||||
|
install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
context.getApplicationContext().startActivity(install);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,16 @@
|
|||||||
package top.jerryyan.RN.A.VersionUpgrade;
|
package top.jerryyan.RN.A.VersionUpgrade;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.DownloadManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Environment;
|
||||||
|
import android.provider.Settings;
|
||||||
|
|
||||||
|
import com.facebook.react.bridge.Callback;
|
||||||
import com.facebook.react.bridge.ReactApplicationContext;
|
import com.facebook.react.bridge.ReactApplicationContext;
|
||||||
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
||||||
import com.facebook.react.bridge.ReactMethod;
|
import com.facebook.react.bridge.ReactMethod;
|
||||||
@ -9,10 +20,15 @@ import java.util.Map;
|
|||||||
|
|
||||||
public class UpgradeModule extends ReactContextBaseJavaModule {
|
public class UpgradeModule extends ReactContextBaseJavaModule {
|
||||||
private final ReactApplicationContext reactContext;
|
private final ReactApplicationContext reactContext;
|
||||||
|
private String downloadUrl;
|
||||||
|
private String title = "应用更新中";
|
||||||
|
private final Activity activity;
|
||||||
|
|
||||||
|
|
||||||
public UpgradeModule(ReactApplicationContext reactContext) {
|
public UpgradeModule(ReactApplicationContext reactContext) {
|
||||||
super(reactContext);
|
super(reactContext);
|
||||||
this.reactContext = reactContext;
|
this.reactContext = reactContext;
|
||||||
|
this.activity = reactContext.getCurrentActivity();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -25,4 +41,43 @@ public class UpgradeModule extends ReactContextBaseJavaModule {
|
|||||||
final Map<String, Object> constants = new HashMap<>();
|
final Map<String, Object> constants = new HashMap<>();
|
||||||
return constants;
|
return constants;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ReactMethod
|
||||||
|
public void setDownloadUrl(String downloadUrl) {
|
||||||
|
this.downloadUrl = downloadUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ReactMethod
|
||||||
|
public void setTitle(String title) {
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean _hasPermissionToInstall() {
|
||||||
|
return activity != null && (Build.VERSION.SDK_INT < Build.VERSION_CODES.O || activity.getPackageManager().canRequestPackageInstalls());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void _requestInstallPermission() {
|
||||||
|
if (activity == null) return;
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
Uri packageURI = Uri.parse("package:" + activity.getPackageName());
|
||||||
|
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
|
||||||
|
(activity).startActivityForResult(intent, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ReactMethod
|
||||||
|
public void startDownload() {
|
||||||
|
if (activity == null) return;
|
||||||
|
if (!this._hasPermissionToInstall()) this._requestInstallPermission();
|
||||||
|
DownloadManager downloadManager = (DownloadManager) activity.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||||
|
Uri uri = Uri.parse(downloadUrl);
|
||||||
|
DownloadManager.Request request = new DownloadManager.Request(uri);
|
||||||
|
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
|
||||||
|
request.setMimeType("application/vnd.android.package-archive");
|
||||||
|
request.setTitle(this.title);
|
||||||
|
request.setDestinationInExternalFilesDir(activity, Environment.DIRECTORY_DOWNLOADS, "");
|
||||||
|
long downloadId = downloadManager.enqueue(request);
|
||||||
|
SharedPreferences sharedPreferences = activity.getSharedPreferences("jerry_rn_a_version_upgrade", 0);
|
||||||
|
sharedPreferences.edit().putLong("downloadId", downloadId).apply();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user