如何在共享意图中添加“添加到剪贴板”图标?
我有这段代码
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);
但仍然遗漏了一些东西,图标没有显示在分享意图中
答案 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;清单文件中的主题。所以你不会看到它的开启和关闭。活动将收到文本,现在您可以将该文本添加到剪贴板,或者对活动中收到的文本执行任何操作。