Java 意图行动"发送"';不能显示每个浏览器

Java 意图行动"发送"';不能显示每个浏览器,java,android,android-intent,share,Java,Android,Android Intent,Share,我有一个按钮,点击时会触发一个动作\发送意图,如下所示: private static final String WEB_URL = "https://www.google.ca/"; @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, W

我有一个按钮,点击时会触发一个动作\发送意图,如下所示:

private static final String WEB_URL = "https://www.google.ca/";

@Override
public void onClick(View v) {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_TEXT, WEB_URL);
    intent.setType("text/plain");
    startActivity(Intent.createChooser(intent, "CHOOOOOSE"));
}
目前,它还有一些其他应用程序,“复制到剪贴板”和“添加到Firefox”,可以用来打开Firefox中的链接。然而,我想让用户决定使用哪个浏览器应用程序来打开链接,但当我使用的这个设备也有“Chrome”和“Internet”应用程序时,“添加到Firefox”似乎是目前唯一的选择


最终,我想要的是一个共享按钮,在点击事件中,它会显示所有已安装的浏览器应用程序,如chrome、firefox、“internet”等、“复制到剪贴板”和任何其他应用程序(解决方案

经过一些研究,我能够实现我想要的

关键是使用“意图。额外的初始意图”和自定义活动

SomeActivity的onClick事件

private static final String WEB_URL = "https://www.google.ca/";

@Override
public void onClick(View v) {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(Uri.parse(WEB_URL));

    Intent clipboardIntent = new Intent(SomeActivity.this, CopyToClipboardActivity.class);
    clipboardIntent.setData(Uri.parse(WEB_URL));

    Intent chooserIntent = Intent.createChooser(intent, "Custom Title...");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {clipboardIntent});
    startActivity(chooserIntent);
}
<activity android:name=".activities.CopyToClipboardActivity"
    android:exported="false"
    android:icon="@drawable/someIcon"
    android:label="@string/copy_to_clipboard"
    android:theme="@android:style/Theme.NoDisplay"/>
将“CopyToClipboardActivity”添加到清单中

private static final String WEB_URL = "https://www.google.ca/";

@Override
public void onClick(View v) {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(Uri.parse(WEB_URL));

    Intent clipboardIntent = new Intent(SomeActivity.this, CopyToClipboardActivity.class);
    clipboardIntent.setData(Uri.parse(WEB_URL));

    Intent chooserIntent = Intent.createChooser(intent, "Custom Title...");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {clipboardIntent});
    startActivity(chooserIntent);
}
<activity android:name=".activities.CopyToClipboardActivity"
    android:exported="false"
    android:icon="@drawable/someIcon"
    android:label="@string/copy_to_clipboard"
    android:theme="@android:style/Theme.NoDisplay"/>

你的意图是打开url或发送纯文本?如果你想重定向到url,你需要在意图中使用Action_视图和URI。我想用“intent.createChooser()”显示应用列表,其列表包括所有浏览器应用和“复制到剪贴板”选项。我尝试使用intent.Action_视图和intent.setData(URI.parse(url))但是在这种情况下,它没有“复制到剪贴板”选项。我想知道你的意图是什么..你想复制文本还是打开url?我的意图是,使用给定的“WEB_url”,显示“intent.createChooser()中的选项”'显示浏览器应用程序的图标,以及'复制到剪贴板'的图标。是的,我想在用户选择的浏览器中复制文本或打开url。我想同时具备这两种功能(复制文本+在浏览器中打开),这两种功能不能同时在一个目的中完成。