I am wondering if there is a possibility to open the browser out of the share intent. Let me give an example to clarify:
I have an app with news in it. Each news has an url, so that the user can share this link with the known android share intent per whatsapp, bluetooth, hangouts or something else). Now I wonder if it is possible, that the user could also open this link in the browser out of this share intent. So: am I able to tell the intent, that he should also show the opportunity to open the news-url in the browser?
My current share intent looks like the following:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setType("text/plain");
String shareString = news.getLink();
intent.putExtra(Intent.EXTRA_TEXT, shareString);
context.startActivity(intent);
I had this same requirement. I used below code
//Creating intent for sharing
//TODO edit your share link
String shareString = "http://www.stackoverflow.com";
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, shareString);
//Creating intent for broswer
//TODO edit you link to open in browser
String url = "http://www.stackoverflow.com";
Intent viewIntent = new Intent(Intent.ACTION_VIEW);
viewIntent.setData(Uri.parse(url));
Intent chooserIntent = Intent.createChooser(sendIntent, "Open in...");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{viewIntent});
startActivity(chooserIntent);
This answer provides a complete example. You can choose the apps you want from the original share intent list and add your own intent.
Related
I would like to share a URI from my app, and have the app chooser dialog show options for ACTION_SEND apps (like SMS and copy to clipboard) as well as ACTION_VIEW apps (like Chrome). So far, I can only seem to get one set of apps to show at a time. Is there a way to combine intent actions?
Here is what plain ACTION_SEND intent looks like:
Intent i = new Intent();
i.setAction(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_TEXT, "www.example.com");
context.startActivity(Intent.createChooser(i, "Share"));
This results in the normal chooser for apps that send information. But no open in browser options.
Here is what ACTION_VIEW intent looks like:
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.putData(Uri.parse("www.example.com"))
context.startActivity(Intent.createChooser(i, "Share"));
This results in the normal chooser for opening the link in the browser. But no options for info sending apps.
Is there a way to "combine" these two behaviors so both sets of options show up in the chooser dialog?
I have also tried to add categories to the intent, but no luck.
EDIT: I stumbled across this question where the OP has the same issue. However, I would like a solution that does not involve creating a bunch of custom activities for each app I'd like to show in the chooser.
I know this is late, but have a different solution:
Create intents for send and view. Create a chooser intent for one of them and pass the other intent as Intent.EXTRA_INITIAL_INTENTS. Like this:
// Share
val sendIntent = Intent(Intent.ACTION_SEND)
sendIntent.setDataAndType(uri, MIME_PDF_TYPE)
sendIntent.putExtra(Intent.EXTRA_TEXT, "TEST")
sendIntent.putExtra(Intent.EXTRA_STREA, uri)
// Open
val openIntent = Intent(Intent.ACTION_VIEW)
openIntent.setDataAndType(uri, MIME_PDF_TYPE)
openIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
val chooserIntent = Intent.createChooser(sendIntent,activity.getString(R.string.sharing_title))
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, arrayOf(openIntent))
activity.startActivity(chooserIntent)
i have kotlin snippet and i'm sharing with you. You can use sharecompact builder.
ShareCompat.IntentBuilder.from(requireActivity())
.setType("text/plain")
.setSubject(getString(R.string.app_name))
.setChooserTitle("Share via")
.setText(your text)
.startChooser()
I'm trying to make refer and earn activity in my appSo I want to permanently display a few apps like whatsapp, etc for the user to click on them and share directly.I'm using Intent to share the referral code but it pops up the apps list when the user clicks share.The code I'm using is,
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "This is a message");
intent.setType("text/plain");
startActivity(Intent.createChooser(intent, "Share via"));
How can I make the app chooser permanent for a few apps?
The app chooser is not intended to be displayed permanently. Therefore you will have to create simple buttons or icons and create an intent that refers to the desired app directly, by setting the package of the intent.
E.g. to share sth with WhatsApp use sth like this:
Intent sendIntent = new Intent();
// here comes the magic
sendIntent.setPackage("com.whatsapp");
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);
Depending on the type of content you want to share and the apps you want to share with, it makes sense to reuse the code to create the intent and just set the respective package and eventually some additional parameters.
You will need package name of app and a Intent.
change ACTION_VIEW to ACTION_SENDTO
set the Uri as you did set the
package to whatsapp
Intent i = new Intent(Intent.ACTION_SENDTO,
Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
i.setType("text/plain");
i.setPackage("com.whatsapp"); // so that only Whatsapp reacts and not the chooser
i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
i.putExtra(Intent.EXTRA_TEXT, "I'm the body.");
startActivity(i);
You can refer this link for More:
Send text to specific contact (whatsapp)
Sending message through WhatsApp
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("*/*");
intent.setPackage("com.whatsapp");
intent.putExtra(Intent.EXTRA_TEXT, "your text content");
startActivity(intent)
I am facing same problem for share tamil font content in Whatsapp. I found the solution, this setType("*/*") share full content.
im trying to share audio file on facebook messenger. Following as mention https://developers.facebook.com/docs/messenger/android#integration_with_intents here but it work to share simple text not audio file. App crash when i try to send audio on messenger.
This is intent share code
String mimeType = "audio/aac";
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setPackage("com.facebook.orca");
intent.setType(mimeType);
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.putExtra(EXTRA_PROTOCOL_VERSION, PROTOCOL_VERSION);
intent.putExtra(EXTRA_APP_ID, YOUR_APP_ID);
this.startActivityForResult(intent, SHARE_TO_MESSENGER_REQUEST_CODE);
There is no option for Facebook, but you can share email and MMS with Bluetooth. Here is my code. Take a look if it helps you:
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("audio/*");
share.putExtra(Intent.EXTRA_STREAM,Uri.parse("file:///"+mypath));
startActivity(Intent.createChooser(share, "Share Sound File"));
break;
I'm programming an Android application. I want to invoke other applications to perform certain operations(Sending emails etc.) How do I know which action and category to set for the intent? Should I look other application's intent filter? What if that application is not open source?
Also, for the data or extra attribute, I don't know how the 3rd party application will handle my intent, so I do not know how to set the attributes. For example, I want one string as the title of the email, one string as the content of the email, and another string as the recipient, and a picture as the attachment. Can I include all these information in the intent? What if the 3rd party application don't provide any functionality to handle it?
Usually, for common tasks in Android there is a general Intent that you send on which other applications can register.
for example to share some text you would create an intent like:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));
will prompt android's native share dialog on which the user can choose how he wants to share it.
Specifically for email you would do something like:
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
"mailto","email#domain.com", null));
intent.putExtra(Intent.EXTRA_SUBJECT, "This is my email subject");
startActivity(Intent.createChooser(intent, "Email"));
Other examples may be to launch the default sms application:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
sendIntent.putExtra("sms_body", getMessageBody());
Or open the phone's dialer:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
You need to figure out what are the actions that you want to implement in your app and then figure out how to implement each of them.
You can find some more data here:
Android content sharing
Android intents - under the various intent actions
Try using category and actions in intent.
Intent mailIntent = new Intent(Intent.ACTION_SEND);
mailIntent.setType("text/plain");
mailIntent.putExtra(Intent.EXTRA_SUBJECT, "Reporting mail");
mailIntent.putExtra(Intent.EXTRA_TEXT, "Some message");
mailIntent.putExtra(Intent.EXTRA_EMAIL, "xxx#yyy.com");
startActivity(mailIntent);
this is an example for sending email. For further details refer http://developer.android.com/guide/components/intents-common.html
I want to send a predifined google+ message via android, but I\m not sure I found the right URL for that. I found https://plus.google.com/app/plus/mp/430/#~loop:view=compose , but it's not setting my text. Is there actually another official app URL that could allow that? Twitter has the one bellow. 10x
Intent i = new Intent();
i.putExtra(Intent.EXTRA_TEXT, msg);
i.setAction(Intent.ACTION_VIEW);
i.setData(Uri.parse("https://mobile.twitter.com/compose/tweet"));
ctx.startActivity(i);
You can share text and images on Google+ with the ACTION_SEND intent.
Example:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, "Hello World!");
shareIntent.setType("text/plain");
startActivity(shareIntent);
If you would like to target the Google+ app directly, you can call setPackage on the shareIntent before calling startActivity.
shareIntent.setPackage("com.google.android.apps.plus");