diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-06-20 01:35:33 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-06-20 01:35:33 +0200 |
commit | b5501eeea6bec74d19bb08abb6c48ea654c0dbd0 (patch) | |
tree | 5d27afc3b00d964b21e40e1c688e56acd178f464 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java | |
parent | 36f3887c5fcd53b76343247868fa95e72b2b0044 (diff) | |
download | open-keychain-b5501eeea6bec74d19bb08abb6c48ea654c0dbd0.tar.gz open-keychain-b5501eeea6bec74d19bb08abb6c48ea654c0dbd0.tar.bz2 open-keychain-b5501eeea6bec74d19bb08abb6c48ea654c0dbd0.zip |
working DisplayTextActivity, more input support in DecryptActivity
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java index 275212ac8..dd6de9c40 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java @@ -18,7 +18,13 @@ package org.sufficientlysecure.keychain.ui; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -262,7 +268,7 @@ public class DecryptListFragment cryptoOperation(); } - private void processResult(final Uri uri, DecryptVerifyResult result) { + private void processResult(final Uri uri, final DecryptVerifyResult result) { Drawable icon = null; OnClickListener onFileClick = null, onKeyClick = null; @@ -301,9 +307,59 @@ public class DecryptListFragment } Uri outputUri = mOutputUris.get(uri); - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(outputUri, metadata.getMimeType()); - activity.startActivity(intent); + + if ("text/plain".equals(metadata.getMimeType())) { + + Intent intent = new Intent(activity, DisplayTextActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.putExtra(DisplayTextActivity.EXTRA_METADATA, result); + intent.setDataAndType(outputUri, "text/plain"); + + try { + + byte[] decryptedMessage; + { + InputStream in = activity.getContentResolver().openInputStream(outputUri); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + byte[] buf = new byte[256]; + int read; + while ( (read = in.read(buf)) > 0) { + out.write(buf, 0, read); + } + in.close(); + out.close(); + decryptedMessage = out.toByteArray(); + } + + String plaintext; + if (result.getCharset() != null) { + try { + plaintext = new String(decryptedMessage, result.getCharset()); + } catch (UnsupportedEncodingException e) { + // if we can't decode properly, just fall back to utf-8 + plaintext = new String(decryptedMessage); + } + } else { + plaintext = new String(decryptedMessage); + } + + intent.putExtra(Intent.EXTRA_TEXT, plaintext); + + } catch (IOException e) { + Notify.create(activity, "error", Style.ERROR).show(); + return; + } + + activity.startActivity(intent); + + } else { + Intent intent = new Intent(activity, DisplayTextActivity.class); + intent.setAction(Intent.ACTION_VIEW); + intent.putExtra(DisplayTextActivity.EXTRA_METADATA, result); + intent.setDataAndType(outputUri, metadata.getMimeType()); + activity.startActivity(intent); + } + } }; } |