MCPcopy Create free account
hub / github.com/M66B/FairEmail / onPrepareActionMode

Method onPrepareActionMode

app/src/main/java/eu/faircode/email/Helper.java:2714–2792  ·  view source on GitHub ↗
(ActionMode mode, Menu menu)

Source from the content-addressed store, hash-verified

2712 }
2713
2714 @Override
2715 public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
2716 try {
2717 String selected = getSelected();
2718 boolean email = (selected != null && Helper.EMAIL_ADDRESS.matcher(selected).matches());
2719 menu.findItem(R.string.title_insert_contact).setVisible(email);
2720 } catch (Throwable ex) {
2721 Log.e(ex);
2722 menu.findItem(R.string.title_insert_contact).setVisible(false);
2723 }
2724
2725 try {
2726 Pair<Integer, Integer> block = StyleHelper.getParagraph(view, true);
2727 boolean ablock = (block != null &&
2728 block.first == view.getSelectionStart() &&
2729 block.second == view.getSelectionEnd());
2730 menu.findItem(R.string.title_select_block).setVisible(!ablock);
2731 } catch (Throwable ex) {
2732 Log.e(ex);
2733 menu.findItem(R.string.title_select_block).setVisible(false);
2734 }
2735
2736 for (int i = 0; i < menu.size(); i++) {
2737 MenuItem item = menu.getItem(i);
2738 Intent intent = item.getIntent();
2739 if (intent != null &&
2740 Intent.ACTION_PROCESS_TEXT.equals(intent.getAction())) {
2741 item.setIntent(null);
2742 item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
2743 @Override
2744 public boolean onMenuItemClick(MenuItem item) {
2745 try {
2746 int start = view.getSelectionStart();
2747 int end = view.getSelectionEnd();
2748 if (start > end) {
2749 int tmp = start;
2750 start = end;
2751 end = tmp;
2752 }
2753 CharSequence selected = view.getText();
2754 if (start >= 0 && end <= selected.length())
2755 selected = selected.subSequence(start, end);
2756 intent.putExtra(Intent.EXTRA_PROCESS_TEXT, selected);
2757 view.getContext().startActivity(intent);
2758 } catch (Throwable ex) {
2759 reportNoViewer(view.getContext(), intent, ex);
2760 /*
2761 java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.PROCESS_TEXT typ=text/plain cmp=com.microsoft.launcher/com.microsoft.bing.ProcessTextSearch launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } (has extras) } from ProcessRecord{befc028 15098:eu.faircode.email/u0a406} (pid=15098, uid=10406) not exported from uid 10021
2762 at android.os.Parcel.readException(Parcel.java:1693)
2763 at android.os.Parcel.readException(Parcel.java:1646)
2764 at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3530)
2765 at android.app.Instrumentation.execStartActivity(Instrumentation.java:1645)
2766 at android.app.Activity.startActivityForResult(Activity.java:5033)
2767 at android.view.View.startActivityForResult(View.java:6413)
2768 at android.widget.Editor$ProcessTextIntentActionsHandler.fireIntent(Editor.java:7597)
2769 at android.widget.Editor$ProcessTextIntentActionsHandler.performMenuItemAction(Editor.java:7542)
2770 at android.widget.Editor$TextActionModeCallback.onActionItemClicked(Editor.java:4246)
2771 at com.android.internal.policy.DecorView$ActionModeCallback2Wrapper.onActionItemClicked(DecorView.java:2971)

Callers

nothing calls this directly

Calls 10

getSelectedMethod · 0.95
eMethod · 0.95
getParagraphMethod · 0.95
sizeMethod · 0.65
matchesMethod · 0.45
getItemMethod · 0.45
getIntentMethod · 0.45
equalsMethod · 0.45
getActionMethod · 0.45

Tested by

no test coverage detected