joecks joecks - 3 months ago 36
Android Question

Android Marshmallow Text Selection Option Menu Actions

Hi I would like to add a global text selection listener which shows a sub menu for a any selected text. Android 6 allows this with the new Text Selection listener.

enter image description here

Is it possible to use this functionality by an external app, which then populates the sub menu?

Answer

The concept is called ACTION_PROCESS_TEXT and is available in Android 6:

Define an intent filter in your Manifest:

<activity android:name=".YourActivity" 
          android:label="@string/process_text_action_name">
    <intent-filter>
        <action android:name="android.intent.action.PROCESS_TEXT" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
</activity>

Then handle the intent in your activity:

Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.process_text_main);
  CharSequence text = getIntent()
      .getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT);
  // process the text
  boolean readonly = getIntent()
  .getBooleanExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, false);
}

You can only define one Action per Activity.

Source

Example

Comments