MainActivity.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.norman.webviewup.demo;
  2. import android.app.Activity;
  3. import android.content.DialogInterface;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.text.TextUtils;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.widget.ProgressBar;
  10. import android.widget.TextView;
  11. import android.widget.Toast;
  12. import androidx.appcompat.app.AlertDialog;
  13. import com.norman.webviewup.lib.UpgradeCallback;
  14. import com.norman.webviewup.lib.UpgradeOptions;
  15. import com.norman.webviewup.lib.WebViewUpgrade;
  16. import java.util.Arrays;
  17. import java.util.List;
  18. public class MainActivity extends Activity implements UpgradeCallback {
  19. private static final List<PackageInfo> UPGRADE_PACKAGE_LIST = Arrays.asList(
  20. new PackageInfo(
  21. "com.google.android.webview",
  22. "122.0.6261.64",
  23. "https://mirror.ghproxy.com/https://raw.githubusercontent.com/JonaNorman/ShareFile/main/com.google.android.webview_122.0.6261.64(armeabi-v7a).apk"),
  24. new PackageInfo(
  25. "com.android.webview",
  26. "113.0.5672.136",
  27. "https://mirror.ghproxy.com/https://raw.githubusercontent.com/JonaNorman/ShareFile/main/com.android.webview_113.0.5672.136(armeabi-v7a).apk"),
  28. new PackageInfo(
  29. "com.huawei.webview",
  30. "14.0.0.331",
  31. "https://gitee.com/JonaNorman/webviewapk/raw/master/com.huawei.webview_14.0.0.331_arm64-v8a_armeabi-v7a.apk")
  32. );
  33. ProgressBar progressBar;
  34. TextView systemWebViewPackageTextView;
  35. TextView upgradeWebViewPackageTextView;
  36. TextView upgradeStatusTextView;
  37. TextView upgradeErrorTextView;
  38. PackageInfo selectPackageInfo;
  39. protected void onCreate(Bundle savedInstanceState) {
  40. super.onCreate(savedInstanceState);
  41. setContentView(R.layout.activity_main);
  42. WebViewUpgrade.addUpgradeCallback(this);
  43. progressBar = findViewById(R.id.upgradeProgressBar);
  44. systemWebViewPackageTextView = findViewById(R.id.systemWebViewPackageTextView);
  45. upgradeWebViewPackageTextView = findViewById(R.id.upgradeWebViewPackageTextView);
  46. upgradeStatusTextView = findViewById(R.id.upgradeStatusTextView);
  47. upgradeErrorTextView = findViewById(R.id.upgradeErrorTextView);
  48. updateSystemWebViewPackageInfo();
  49. updateSystemWebViewPackageInfo();
  50. updateUpgradeWebViewStatus();
  51. findViewById(R.id.upgradeButton).setOnClickListener(new View.OnClickListener() {
  52. @Override
  53. public void onClick(View v) {
  54. if (WebViewUpgrade.isProcessing()) {
  55. Toast.makeText(getApplicationContext(), "webView is being upgraded, please wait", Toast.LENGTH_SHORT).show();
  56. } else if (WebViewUpgrade.isCompleted()) {
  57. Toast.makeText(getApplicationContext(), "WebView is already upgrade success", Toast.LENGTH_SHORT).show();
  58. } else {
  59. showChooseWebViewDialog();
  60. }
  61. }
  62. });
  63. findViewById(R.id.webViewButton).setOnClickListener(new View.OnClickListener() {
  64. @Override
  65. public void onClick(View v) {
  66. startActivity(new Intent(MainActivity.this, WebViewActivity.class));
  67. }
  68. });
  69. }
  70. @Override
  71. protected void onDestroy() {
  72. super.onDestroy();
  73. WebViewUpgrade.removeUpgradeCallback(this);
  74. }
  75. @Override
  76. public void onUpgradeProcess(float percent) {
  77. updateUpgradeWebViewStatus();
  78. }
  79. @Override
  80. public void onUpgradeComplete() {
  81. updateUpgradeWebViewStatus();
  82. Toast.makeText(getApplicationContext(), "webView upgrade success", Toast.LENGTH_SHORT).show();
  83. }
  84. @Override
  85. public void onUpgradeError(Throwable throwable) {
  86. Toast.makeText(getApplicationContext(), "webView upgrade fail", Toast.LENGTH_SHORT).show();
  87. updateUpgradeWebViewStatus();
  88. }
  89. private void showChooseWebViewDialog() {
  90. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  91. builder.setTitle("Choose WebView");
  92. String[] items = new String[UPGRADE_PACKAGE_LIST.size()];
  93. for (int i = 0; i < items.length; i++) {
  94. items[i] = UPGRADE_PACKAGE_LIST.get(i).title;
  95. }
  96. builder.setItems(items, new DialogInterface.OnClickListener() {
  97. @Override
  98. public void onClick(DialogInterface dialog, int which) {
  99. PackageInfo packageInfo = UPGRADE_PACKAGE_LIST.get(which);
  100. selectPackageInfo = packageInfo;
  101. UpgradeOptions upgradeOptions = new UpgradeOptions
  102. .Builder(getApplicationContext(),
  103. packageInfo.packageName,
  104. packageInfo.url,
  105. packageInfo.versionName,
  106. new DownloadSinkImpl())
  107. .build();
  108. WebViewUpgrade.upgrade(upgradeOptions);
  109. updateUpgradeWebViewPackageInfo();
  110. updateUpgradeWebViewStatus();
  111. }
  112. });
  113. AlertDialog dialog = builder.create();
  114. dialog.show();
  115. }
  116. private void updateSystemWebViewPackageInfo() {
  117. String systemWebViewPackageName = WebViewUpgrade.getSystemWebViewPackageName();
  118. String systemWebViewPackageVersion = WebViewUpgrade.getSystemWebViewPackageVersion();
  119. String systemWebViewPackageInfo = "unknown";
  120. if (!TextUtils.isEmpty(systemWebViewPackageName)
  121. || !TextUtils.isEmpty(systemWebViewPackageVersion)) {
  122. systemWebViewPackageInfo = (!TextUtils.isEmpty(systemWebViewPackageName) ? systemWebViewPackageName : "unknown")
  123. + ":" + (!TextUtils.isEmpty(systemWebViewPackageVersion) ? systemWebViewPackageVersion : "unknown");
  124. }
  125. systemWebViewPackageTextView.setText(systemWebViewPackageInfo);
  126. }
  127. private void updateUpgradeWebViewPackageInfo() {
  128. String upgradeWebViewPackageName = WebViewUpgrade.getUpgradeWebViewPackageName();
  129. String upgradeWebViewPackageVersion = WebViewUpgrade.getUpgradeWebViewVersion();
  130. String upgradeWebViewPackageInfo = "";
  131. if (!TextUtils.isEmpty(upgradeWebViewPackageName)
  132. || !TextUtils.isEmpty(upgradeWebViewPackageVersion)) {
  133. upgradeWebViewPackageInfo = (!TextUtils.isEmpty(upgradeWebViewPackageName) ? upgradeWebViewPackageName : "unknown")
  134. + ":" + (!TextUtils.isEmpty(upgradeWebViewPackageVersion) ? upgradeWebViewPackageVersion : "unknown");
  135. }
  136. upgradeWebViewPackageTextView.setText(upgradeWebViewPackageInfo);
  137. }
  138. private void updateUpgradeWebViewStatus() {
  139. if (WebViewUpgrade.isProcessing()) {
  140. upgradeStatusTextView.setText("runing...");
  141. } else if (WebViewUpgrade.isFailed()) {
  142. upgradeStatusTextView.setText("fail");
  143. } else if (WebViewUpgrade.isCompleted()) {
  144. upgradeStatusTextView.setText("complete");
  145. } else if (WebViewUpgrade.isInited()) {
  146. upgradeStatusTextView.setText("init");
  147. } else {
  148. upgradeStatusTextView.setText("uninit");
  149. }
  150. progressBar.setProgress((int) (WebViewUpgrade.getUpgradeProcess() * 100));
  151. Throwable throwable = WebViewUpgrade.getUpgradeError();
  152. if (throwable == null) {
  153. upgradeErrorTextView.setText("");
  154. } else {
  155. upgradeErrorTextView.setText("message:" + throwable.getMessage() + "\nstackTrace:" + Log.getStackTraceString(throwable));
  156. }
  157. }
  158. static class PackageInfo {
  159. public PackageInfo(String packageName, String versionName, String url) {
  160. this.title = packageName + "\n" + versionName;
  161. this.url = url;
  162. this.packageName = packageName;
  163. this.versionName = versionName;
  164. }
  165. String title;
  166. String url;
  167. String packageName;
  168. String versionName;
  169. }
  170. }