7

我想知道在浏览器、消息等任何应用程序中选择文本时是否可以启动活动或应用程序。

就像我们在任何出现小弹出窗口的地方选择文本时提到剪切、复制、粘贴选项一样。我可以在那里添加另一个按钮吗?启动我的应用程序?

如果可以,请指导我如何做到这一点并将数据发送到我的应用程序..

谢谢 !

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.main);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
4

2 回答 2

5

与您所描述的最接近的是您的应用程序注册为处理android.intent.action.SEND意图,如下所述:

http://developer.android.com/training/sharing/receive.html

intent-filter声明看起来像这样:

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>

用户看到的...

当用户在其他应用程序中选择文本时,如果该应用程序支持该文本,他们将获得您已经看到的复制和粘贴选项,但他们也会获得“共享”选项 - 图标是三个点由两条线连接:

在此处输入图像描述

...然后当用户点击“分享”图标时:

您的应用程序将出现在向用户显示的应用程序列表中。如果用户选择您的应用程序,您将收到包含共享文本的意图,然后您可以提取该意图,即:

String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);

进一步阅读

http://android-developers.blogspot.com/2012/02/share-with-intents.html

于 2013-05-01T21:34:09.573 回答
3

Android 6.0 Marshmallow 推出ACTION_PROCESS_TEXT。它允许您向该文本选择工具栏添加自定义操作。

首先,您必须在您的清单中添加一个意图过滤器,

<activity android:name=".YourActivity" 
          android:label="@string/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>

然后YourActivity是您想在用户选择文本时启动。

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
}

资源

于 2016-01-29T16:02:20.540 回答