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

时间:2013-08-18 08:53:09

标签: android android-intent

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

我有这段代码

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);

但仍然遗漏了一些东西,图标没有显示在分享意图中

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

要在Share Via菜单中添加选项,
- 首先,您需要创建一个活动来处理将通过Share Via菜单共享的数据 - 第二次使用针对首选mime-type的intent-filter在清单文件中添加该活动 - 第三步在我们在步骤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>

现在,当您从应用或任何其他应用分享某些文字时,您会看到“复制到剪贴板”&#39; Share Via菜单中的选项。当你点击它时,它将打开CopyToClipboardActivity但活动是不可见的,因为我们已经使用了&#39; Theme.Translucent.NoTitleBar&#39;清单文件中的主题。所以你不会看到它的开启和关闭。活动将收到文本,现在您可以将该文本添加到剪贴板,或者对活动中收到的文本执行任何操作。