|
3 | 3 | import android.Manifest;
|
4 | 4 | import android.content.Intent;
|
5 | 5 | import android.content.pm.PackageManager;
|
| 6 | +import android.content.pm.PermissionInfo; |
6 | 7 | import android.support.v4.app.ActivityCompat;
|
7 | 8 | import android.support.v4.content.ContextCompat;
|
8 | 9 | import android.support.v7.app.AlertDialog;
|
|
22 | 23 | import android.widget.Toast;
|
23 | 24 |
|
24 | 25 | import java.io.File;
|
| 26 | +import java.io.FileInputStream; |
25 | 27 | import java.net.InterfaceAddress;
|
26 | 28 | import java.net.NetworkInterface;
|
27 | 29 | import java.util.ArrayList;
|
@@ -55,7 +57,9 @@ protected void onDestroy() {
|
55 | 57 | @Override
|
56 | 58 | public boolean onCreateOptionsMenu(Menu menu) {
|
57 | 59 | menu.add(Menu.NONE, 101, Menu.NONE, "NICs");
|
58 |
| - menu.add(Menu.NONE, 102, Menu.NONE, "Reset"); |
| 60 | + menu.add(Menu.NONE, 102, Menu.NONE, "Node Version"); |
| 61 | + menu.add(Menu.NONE, 103, Menu.NONE, "Node Upgrade"); |
| 62 | + menu.add(Menu.NONE, 199, Menu.NONE, "Reset"); |
59 | 63 | return true;
|
60 | 64 | }
|
61 | 65 |
|
@@ -94,7 +98,13 @@ public boolean onOptionsItemSelected(MenuItem item) {
|
94 | 98 | builder.setMessage(text).setTitle("NetworkInterface(s)");
|
95 | 99 | builder.create().show();
|
96 | 100 | break;
|
97 |
| - case 102: // reset |
| 101 | + case 102: // Show NodeJS Version |
| 102 | + show_node_version(); |
| 103 | + break; |
| 104 | + case 103: // Upgrade NodeJS |
| 105 | + copy_bin_node_from_nodebase_workdir(); |
| 106 | + break; |
| 107 | + case 199: // reset |
98 | 108 | Log.i("UI:ActionButton", "Update node js binary ...");
|
99 | 109 | Utils.resetNodeJS(NodeBase.this, getApplicationInfo().dataDir);
|
100 | 110 | refreshAppList();
|
@@ -287,6 +297,41 @@ public void stop() {
|
287 | 297 | private NodeBase _nodebase;
|
288 | 298 | }
|
289 | 299 |
|
| 300 | + private void copy_bin_node_from_nodebase_workdir() { |
| 301 | + String dirname = _txtAppRootDir.getText().toString(); |
| 302 | + String upgrade_node_filename = String.format("%s/.bin/node", dirname); |
| 303 | + File f = new File(upgrade_node_filename); |
| 304 | + if (!f.exists()) { |
| 305 | + AlertDialog.Builder builder = new AlertDialog.Builder(this); |
| 306 | + builder.setMessage( |
| 307 | + String.format("%s does not exists.", upgrade_node_filename) |
| 308 | + ).setTitle("Upgrade Failed"); |
| 309 | + builder.create().show(); |
| 310 | + return; |
| 311 | + } |
| 312 | + try { |
| 313 | + FileInputStream fr = new FileInputStream(f); |
| 314 | + Utils.prepareNode(getApplicationInfo().dataDir, fr, true); |
| 315 | + fr.close(); |
| 316 | + } catch (Exception e) { |
| 317 | + Log.e("NodeBase:upgrade_node", |
| 318 | + "Cannot copy binary file of \"node\""); |
| 319 | + } |
| 320 | + } |
| 321 | + |
| 322 | + private void show_node_version() { |
| 323 | + String version = NodeBaseServer.nodeVersion(getApplicationInfo().dataDir); |
| 324 | + String text = null; |
| 325 | + if (version == null) { |
| 326 | + text = "NodeJS: (not found)"; |
| 327 | + } else { |
| 328 | + text = String.format("NodeJS: %s", version); |
| 329 | + } |
| 330 | + AlertDialog.Builder builder = new AlertDialog.Builder(this); |
| 331 | + builder.setMessage(text).setTitle("Node Version"); |
| 332 | + builder.create().show(); |
| 333 | + } |
| 334 | + |
290 | 335 | private boolean _permissionSdcard;
|
291 | 336 |
|
292 | 337 | // state
|
|
0 commit comments