Intent Action_send Doesn't Show Every Browser
I have a button which fires a ACTION_SEND intent when clicked as below: private static final String WEB_URL = 'https://www.google.ca/'; @Override public void onClick(View v) {
Solution 1:
Solution
I was able to achieve what I wanted above after some research.
The key is to use 'Intent.EXTRA_INITIAL_INTENTS' and a custom Activity.
SomeActivity's onClick Event
privatestaticfinalStringWEB_URL="https://www.google.ca/";
@OverridepublicvoidonClick(View v) {
Intentintent=newIntent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(WEB_URL));
IntentclipboardIntent=newIntent(SomeActivity.this, CopyToClipboardActivity.class);
clipboardIntent.setData(Uri.parse(WEB_URL));
IntentchooserIntent= Intent.createChooser(intent, "Custom Title...");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, newIntent[] {clipboardIntent});
startActivity(chooserIntent);
}
Add 'CopyToClipboardActivity' to Manifest
<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.java
publicclassCopyToClipboardActivityextendsActivity {
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uriuri= getIntent().getData();
if (uri != null) {
copyTextToClipboard(uri.toString());
Toast.makeText(this, "Link copied to clipboard", Toast.LENGTH_SHORT).show();
}
// Finish right away. We don't want to actually display a UI.
finish();
}
privatevoidcopyTextToClipboard(String url) {
ClipboardManagerclipboard= (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipDataclip= ClipData.newPlainText("URL", url);
clipboard.setPrimaryClip(clip);
}
}
Post a Comment for "Intent Action_send Doesn't Show Every Browser"