diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index ef672dc03f..869442e862 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -86,6 +86,7 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc "avatars".equals(key) || "identicons".equals(key) || "preview".equals(key) || + "confirm".equals(key) || "debug".equals(key))) finish(); } diff --git a/app/src/main/java/eu/faircode/email/AdapterAttachment.java b/app/src/main/java/eu/faircode/email/AdapterAttachment.java index 6d99b81b84..e5e6cf2860 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAttachment.java +++ b/app/src/main/java/eu/faircode/email/AdapterAttachment.java @@ -21,6 +21,7 @@ package eu.faircode.email; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; @@ -59,6 +60,7 @@ public class AdapterAttachment extends RecyclerView.Adapter all = new ArrayList<>(); @@ -181,6 +183,7 @@ public class AdapterAttachment extends RecyclerView.Adapter ris = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo ri : ris) { Log.i(Helper.TAG, "Target=" + ri); + context.grantUriPermission(ri.activityInfo.packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); targets.add(new NameResolveInfo( pm.getApplicationIcon(ri.activityInfo.applicationInfo), pm.getApplicationLabel(ri.activityInfo.applicationInfo).toString(), @@ -193,32 +196,34 @@ public class AdapterAttachment extends RecyclerView.Adapter parent, View view, int position, long id) { - NameResolveInfo selected = (NameResolveInfo) parent.getItemAtPosition(position); - context.grantUriPermission(selected.info.activityInfo.packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); - intent.setPackage(selected.info.activityInfo.packageName); - context.startActivity(intent); - dialog.dismiss(); - } - }); + lvApp.setAdapter(new TargetAdapter(context, R.layout.item_target, targets)); + lvApp.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + NameResolveInfo selected = (NameResolveInfo) parent.getItemAtPosition(position); + intent.setPackage(selected.info.activityInfo.packageName); + context.startActivity(intent); + dialog.dismiss(); + } + }); - dialog.show(); + dialog.show(); + } else + context.startActivity(intent); } else { if (attachment.progress == null) { Bundle args = new Bundle(); @@ -293,10 +298,12 @@ public class AdapterAttachment extends RecyclerView.Adapter bodyTask = new SimpleTask() { @@ -1469,6 +1484,7 @@ public class AdapterMessage extends PagedListAdapter + + + app:layout_constraintTop_toBottomOf="@id/swConfirm" /> Browse messages on the server Swipe actions Previous/next navigation + Confirm actions that might leak privacy sensitive information Allow editing sender address Most providers do not allow modified sender addresses Automatically download messages and attachments on a metered connection up to