3

如何在共享意图中添加“添加到剪贴板”图标?

我有这个代码

ClipboardManager copyToClipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("Title", "Text");
copyToClipboard.setPrimaryClip(clip);

Intent clipboardIntent = new Intent();
clipboardIntent.putExtra(Intent.EXTRA_TEXT, "Extra Text");
clipboardIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");

Intent shareIntent = new Intent();
shareIntent .setAction(Intent.ACTION_SEND);
shareIntent .putExtra(Intent.EXTRA_TEXT, "Text");
shareIntent .setType("text/plain");

Intent shareChooserIntent = Intent.createChooser(shareIntent, "Share via");
shareChooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { clipboardIntent });
startActivity(shareChooserIntent);

但仍然缺少一些东西,图标没有显示在分享意图中

4

2 回答 2

3

您需要安装一个实际的剪贴板应用程序来处理数据类型的ACTION_SEND意图text/plain

我之前在选择器中看到过你所说的图标,但我很确定它只有在我安装了自定义 ROM 时才会出现;一个可能有用于此目的的系统应用程序。您能否举一个应用程序的示例,该应用程序在您的设备上显示“复制到剪贴板”选项(未安装剪贴板应用程序)?

于 2013-08-18T09:00:52.533 回答
1

要在共享方式菜单中添加一个选项,
- 首先您需要创建一个活动来处理将通过共享方式菜单共享的数据。
- 第二次在清单文件中添加该活动,并带有用于首选 mime 类型的意图过滤器。
- 第三次在我们在步骤 1 中创建的活动中添加共享数据处理代码,在您的情况下编写代码以将共享数据添加到剪贴板'。
- 第四放松。

1.活动代码

public class CopyToClipboardActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        finish();
        String receivedText;

        if (getIntent() != null && getIntent().getAction().equals(Intent.ACTION_SEND)) {
            receivedText = getIntent().getStringExtra(Intent.EXTRA_TEXT);
            Toast.makeText(this, recievedText, Toast.LENGTH_SHORT).show();

            //write shared-data handling code below to copy the received text to the clipboard. 

        }
    }
}

2.清单代码

<activity
    android:name=".CopyToClipboardActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar">
    <intent-filter
        android:label="Copy to Clipboard">
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
</activity>

现在,当您从您的应用程序或任何其他应用程序共享一些文本时,您将在“共享方式”菜单中看到此“复制到剪贴板”选项。当您单击它时,它将打开 CopyToClipboardActivity 但该活动是不可见的,因为我们在清单文件中使用了“Theme.Translucent.NoTitleBar”主题。所以你不会看到它打开和关闭。该活动将接收文本,现在您可以将该文本添加到剪贴板或对活动中收到的文本执行任何您想做的事情。

于 2016-10-09T23:35:51.853 回答