multidecrypt: use chooser intent on click for everything but text/plain ACTION_SHOW

This commit is contained in:
Vincent Breitmoser
2015-09-17 13:45:09 +02:00
parent f77a6a85ee
commit 7da80c84b7
2 changed files with 38 additions and 10 deletions

View File

@@ -28,6 +28,7 @@ import android.app.Activity;
import android.content.ClipDescription;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LabeledIntent;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.Point;
@@ -36,6 +37,7 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
@@ -59,6 +61,7 @@ import android.widget.ViewAnimator;
import com.cocosw.bottomsheet.BottomSheet;
import org.openintents.openpgp.OpenPgpMetadata;
import org.openintents.openpgp.OpenPgpSignatureResult;
import org.sufficientlysecure.keychain.BuildConfig;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.InputDataResult;
@@ -430,10 +433,10 @@ public class DecryptListFragment
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.decrypt_open:
displayWithViewIntent(result, index, false);
displayWithViewIntent(result, index, false, true);
break;
case R.id.decrypt_share:
displayWithViewIntent(result, index, true);
displayWithViewIntent(result, index, true, true);
break;
case R.id.decrypt_save:
saveFileDialog(result, index);
@@ -445,7 +448,7 @@ public class DecryptListFragment
}
public void displayWithViewIntent(InputDataResult result, int index, boolean share) {
public void displayWithViewIntent(InputDataResult result, int index, boolean share, boolean forceChooser) {
Activity activity = getActivity();
if (activity == null) {
return;
@@ -466,7 +469,9 @@ public class DecryptListFragment
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, plaintext);
startActivity(intent);
Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_share));
startActivity(chooserIntent);
} catch (IOException e) {
Notify.create(activity, R.string.error_preparing_data, Style.ERROR).show();
@@ -475,12 +480,34 @@ public class DecryptListFragment
return;
}
Intent intent = new Intent(activity, DisplayTextActivity.class);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(outputUri, "text/plain");
intent.putExtra(DisplayTextActivity.EXTRA_RESULT, result.mDecryptVerifyResult);
intent.putExtra(DisplayTextActivity.EXTRA_METADATA, metadata);
activity.startActivity(intent);
if (forceChooser) {
LabeledIntent internalIntent = new LabeledIntent(
new Intent(intent)
.setClass(activity, DisplayTextActivity.class)
.putExtra(DisplayTextActivity.EXTRA_RESULT, result.mDecryptVerifyResult)
.putExtra(DisplayTextActivity.EXTRA_METADATA, metadata),
BuildConfig.APPLICATION_ID, R.string.view_internal, R.mipmap.ic_launcher);
Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
new Parcelable[] { internalIntent });
startActivity(chooserIntent);
} else {
intent.setClass(activity, DisplayTextActivity.class);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(DisplayTextActivity.EXTRA_RESULT, result.mDecryptVerifyResult);
intent.putExtra(DisplayTextActivity.EXTRA_METADATA, metadata);
startActivity(intent);
}
} else {
@@ -498,7 +525,7 @@ public class DecryptListFragment
Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show));
chooserIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
activity.startActivity(chooserIntent);
startActivity(chooserIntent);
}
}
@@ -768,7 +795,7 @@ public class DecryptListFragment
@Override
public void onClick(View view) {
if (model.mResult.success()) {
displayWithViewIntent(model.mResult, idx, false);
displayWithViewIntent(model.mResult, idx, false, false);
}
}
});

View File

@@ -1544,6 +1544,7 @@
<string name="filename_unknown">Unknown filename (click to open)</string>
<string name="filename_unknown_text">Text (click to show)</string>
<string name="intent_show">Show Signed/Encrypted Content</string>
<string name="intent_share">Share Signed/Encrypted Content</string>
<string name="view_internal">"View in OpenKeychain"</string>
<string name="error_preparing_data">"Error preparing data!"</string>
<string name="label_clip_title">"Encrypted Data"</string>