diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index 807b8be..3b928b4 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -2,13 +2,8 @@
xmlns:android="http://schemas.android.com/apk/res/android">
-
+
-
-
-
-
-
= 24) {
- Uri apkUri = FileProvider.getUriForFile(context, context.getPackageName().concat(".fileprovider"), file);
- install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
- install.setDataAndType(apkUri, "application/vnd.android.package-archive");
- } else {
- install.setDataAndType(Uri.parse(fileUri), "application/vnd.android.package-archive");
- }
- install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(install);
- }
- }
-}
diff --git a/android/src/main/java/top/jerryyan/RN/A/VersionUpgrade/UpgradeModule.java b/android/src/main/java/top/jerryyan/RN/A/VersionUpgrade/UpgradeModule.java
index aeb8599..a4244a7 100644
--- a/android/src/main/java/top/jerryyan/RN/A/VersionUpgrade/UpgradeModule.java
+++ b/android/src/main/java/top/jerryyan/RN/A/VersionUpgrade/UpgradeModule.java
@@ -1,27 +1,38 @@
package top.jerryyan.RN.A.VersionUpgrade;
import android.app.Activity;
-import android.app.DownloadManager;
-import android.content.Context;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.content.Intent;
-import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
-import android.os.Environment;
import android.provider.Settings;
+import android.util.Log;
-import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+
public class UpgradeModule extends ReactContextBaseJavaModule {
private final ReactApplicationContext reactContext;
- private String downloadUrl;
- private String title = "更新";
+ private String DOWNLOAD_URL = "http://luntan.qgmzbxs.com/source/tsgzCircles.apk";
+ private String TITLE = "更新";
+ private String CONTENT = "大家好,我是勤劳的催更新菌\n点击更新,让我们一起成为一天更新八次的暴躁老哥吧";
public UpgradeModule(ReactApplicationContext reactContext) {
super(reactContext);
@@ -39,16 +50,6 @@ public class UpgradeModule extends ReactContextBaseJavaModule {
return constants;
}
- @ReactMethod
- public void setDownloadUrl(String downloadUrl) {
- this.downloadUrl = downloadUrl;
- }
-
- @ReactMethod
- public void setTitle(String title) {
- this.title = title;
- }
-
private boolean _hasPermissionToInstall() {
Activity activity = reactContext.getCurrentActivity();
return activity != null && (Build.VERSION.SDK_INT < Build.VERSION_CODES.O || activity.getPackageManager().canRequestPackageInstalls());
@@ -64,21 +65,91 @@ public class UpgradeModule extends ReactContextBaseJavaModule {
}
}
+ private void _alertDialog(){
+ final UpgradeModule that = this;
+ AlertDialog dialog = new AlertDialog.Builder(reactContext.getCurrentActivity())
+ .setTitle(TITLE)
+ .setMessage(CONTENT)
+ .setNeutralButton("取消",
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ }
+ )
+ .setNegativeButton("更新",
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ that._startDownload();
+ }
+ }
+ )
+ .show();
+ dialog.setCanceledOnTouchOutside(true);//可选
+ dialog.setCancelable(true);//可选
+ }
+
+ private void _startDownload(){
+
+ }
+
@ReactMethod
- public void startDownload() {
- Activity activity = reactContext.getCurrentActivity();
- 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.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
- 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).commit();
+ public void checkUpgrade(){
+ final UpgradeModule that = this;
+ OkHttpClient okHttpClient = new OkHttpClient();
+ String upgradeUrl = "https://www.tsgzvore.com/versionCheck";
+ PackageManager manager = reactContext.getPackageManager();
+ try {
+ String packageName = reactContext.getPackageName();
+ PackageInfo info = manager.getPackageInfo(packageName, 0);
+ String versionName = info.versionName;
+ upgradeUrl = upgradeUrl
+ .concat("?packageName=")
+ .concat(packageName)
+ .concat("&version=")
+ .concat(versionName);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e("Version Upgrade", "NOT FOUND MY PACKAGE TAT", e);
+ return;
+ }
+ final Request request = new Request.Builder()
+ .url(upgradeUrl)
+ .method("GET", null)
+ .build();
+ Call call = okHttpClient.newCall(request);
+ call.enqueue(new Callback() {
+ @Override
+ public void onFailure(Call call, IOException e) {
+ Log.e("VERSION CHECK", call.toString(), e);
+ }
+
+ @Override
+ public void onResponse(Call call, Response response) {
+ Log.d("VERSION CHECK", call.toString());
+ if(response.isSuccessful()){
+ Log.d("VERSION CHECK", "REQUESTS OK");
+ if(response.body() == null) return;
+ try {
+ String jsonText = response.body().string();
+ Log.d("VERSION CHECK", jsonText);
+ JSONObject json = new JSONObject(jsonText);
+ int status = json.getInt("status");
+ CONTENT = json.getString("message");
+ String version = json.getString("version");
+ if(status > 0){
+ JSONObject jsonData = json.getJSONObject("data");
+ DOWNLOAD_URL = jsonData.getString("url");
+ that._alertDialog();
+ }
+ } catch (IOException e) {
+ Log.e("REQUEST FAILED", "AAA", e);
+ } catch (JSONException e) {
+ Log.e("JSON FAILED", "BBB", e);
+ }
+ }
+ }
+ });
}
}