mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-27 11:12:15 -05:00
extract readTextFromUri into FileHelper
This commit is contained in:
parent
25beeaceb5
commit
f6bc1dcca3
@ -18,11 +18,8 @@
|
|||||||
package org.sufficientlysecure.keychain.ui;
|
package org.sufficientlysecure.keychain.ui;
|
||||||
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -346,40 +343,14 @@ public class DecryptListFragment
|
|||||||
intent.putExtra(DisplayTextActivity.EXTRA_METADATA, result);
|
intent.putExtra(DisplayTextActivity.EXTRA_METADATA, result);
|
||||||
intent.setDataAndType(outputUri, "text/plain");
|
intent.setDataAndType(outputUri, "text/plain");
|
||||||
|
|
||||||
|
String plaintext;
|
||||||
try {
|
try {
|
||||||
|
plaintext = FileHelper.readTextFromUri(activity, outputUri, result.getCharset());
|
||||||
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) {
|
} catch (IOException e) {
|
||||||
Notify.create(activity, R.string.error_preparing_data, Style.ERROR).show();
|
Notify.create(activity, R.string.error_preparing_data, Style.ERROR).show();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
intent.putExtra(Intent.EXTRA_TEXT, plaintext);
|
||||||
|
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,11 @@ import org.sufficientlysecure.keychain.R;
|
|||||||
import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround;
|
import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround;
|
||||||
import org.sufficientlysecure.keychain.ui.dialog.FileDialogFragment;
|
import org.sufficientlysecure.keychain.ui.dialog.FileDialogFragment;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
public class FileHelper {
|
public class FileHelper {
|
||||||
@ -234,6 +238,39 @@ public class FileHelper {
|
|||||||
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
|
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String readTextFromUri(Context context, Uri outputUri, String charset)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
|
byte[] decryptedMessage;
|
||||||
|
{
|
||||||
|
InputStream in = context.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 (charset != null) {
|
||||||
|
try {
|
||||||
|
plaintext = new String(decryptedMessage, charset);
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
// if we can't decode properly, just fall back to utf-8
|
||||||
|
plaintext = new String(decryptedMessage);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
plaintext = new String(decryptedMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
return plaintext;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static interface FileDialogCallback {
|
public static interface FileDialogCallback {
|
||||||
public void onFileSelected(File file, boolean checked);
|
public void onFileSelected(File file, boolean checked);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user