diff options
Diffstat (limited to 'tools/signapk')
-rw-r--r-- | tools/signapk/SignApk.java | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/tools/signapk/SignApk.java b/tools/signapk/SignApk.java index 88f486ab72..3ddab11b80 100644 --- a/tools/signapk/SignApk.java +++ b/tools/signapk/SignApk.java @@ -167,18 +167,29 @@ class SignApk { } /** - * Reads the password from console and returns it as a string. + * If a console doesn't exist, reads the password from stdin + * If a console exists, reads the password from console and returns it as a string. * * @param keyFile The file containing the private key. Used to prompt the user. */ private static String readPassword(File keyFile) { Console console; char[] pwd; - if((console = System.console()) != null && - (pwd = console.readPassword("[%s]", "Enter password for " + keyFile)) != null){ - return String.valueOf(pwd); + if ((console = System.console()) == null) { + System.out.print("Enter password for " + keyFile + " (password will not be hidden): "); + System.out.flush(); + BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); + try { + return stdin.readLine(); + } catch (IOException ex) { + return null; + } } else { - return null; + if ((pwd = console.readPassword("[%s]", "Enter password for " + keyFile)) != null) { + return String.valueOf(pwd); + } else { + return null; + } } } |