Trying to a share a bit of text using ACTION_SEND. Facebook will popup
as an app capable of handling this, but fails to handle the intent
correctly. Using this:
Intent intent = new Intent(Intent.ACTION_SEND);
intent .setType("text/plain");
intent .putExtra(android.content.Intent.EXTRA_TEXT, "This is a
test.");
startActivity(Intent.createChooser(intent, "testing..."));
I read that the problem is that while Facebook has registered as
supporting text/plain, it can only actually deal with urls.
If this is really a problem, is there a way I can somehow explicitly
remove Facebook from the list of applications that can handle my
ACTION_SEND request? Or somehow modify my intent to specifically deal
with Facebook?
> Trying to a share a bit of text using ACTION_SEND. Facebook will popup
> as an app capable of handling this, but fails to handle the intent
> correctly. Using this:
> Intent intent = new Intent(Intent.ACTION_SEND);
> intent .setType("text/plain");
> intent .putExtra(android.content.Intent.EXTRA_TEXT, "This is a
> test.");
> startActivity(Intent.createChooser(intent, "testing..."));
> I read that the problem is that while Facebook has registered as
> supporting text/plain, it can only actually deal with urls.
> If this is really a problem, is there a way I can somehow explicitly
> remove Facebook from the list of applications that can handle my
> ACTION_SEND request? Or somehow modify my intent to specifically deal
> with Facebook?
I don't know about the latter. If you are willing to roll your own
chooser, the former should be possible. The underlying PackageManager
methods that support the chooser, such as queryIntentActivities(), would
allow you to find miscreants and filter them out of your list. You'd need
to present that list to the user, though.
Ok so I can get a list of names which will match my intent with the following:
// Get apps which can handle text/plain (or at least claim to). Intent sendIntent = new Intent(Intent.ACTION_SEND, null); sendIntent.addCategory(Intent.CATEGORY_DEFAULT); sendIntent.setType("text/plain"); PackageManager pm = getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities (sendIntent, 0);
so yeah I can see facebook is handling it with ShareLinkActivity (and I ain't sharing a link). So knowing this, I suppose I could build my own picker dialog, and specifically modify the intent for facebook by supplying only a url, instead of real text.
How could I find the cool little icons that each app uses to go with my own picker dialog? I don't like doing this, I wish they did not implement facebook like this..
Thanks
On Dec 16, 6:24 pm, "Mark Murphy" <mmur...@commonsware.com> wrote:
> > Trying to a share a bit of text using ACTION_SEND. Facebook will popup > > as an app capable of handling this, but fails to handle the intent > > correctly. Using this:
> > Intent intent = new Intent(Intent.ACTION_SEND); > > intent .setType("text/plain"); > > intent .putExtra(android.content.Intent.EXTRA_TEXT, "This is a > > test."); > > startActivity(Intent.createChooser(intent, "testing..."));
> > I read that the problem is that while Facebook has registered as > > supporting text/plain, it can only actually deal with urls.
> > If this is really a problem, is there a way I can somehow explicitly > > remove Facebook from the list of applications that can handle my > > ACTION_SEND request? Or somehow modify my intent to specifically deal > > with Facebook?
> I don't know about the latter. If you are willing to roll your own > chooser, the former should be possible. The underlying PackageManager > methods that support the chooser, such as queryIntentActivities(), would > allow you to find miscreants and filter them out of your list. You'd need > to present that list to the user, though.
> so yeah I can see facebook is handling it with ShareLinkActivity (and > I ain't sharing a link). So knowing this, I suppose I could build my > own picker dialog, and specifically modify the intent for facebook by > supplying only a url, instead of real text.
> How could I find the cool little icons that each app uses to go with > my own picker dialog? I don't like doing this, I wish they did not > implement facebook like this..
> Thanks
> On Dec 16, 6:24 pm, "Mark Murphy" <mmur...@commonsware.com> wrote:
> > > Trying to a share a bit of text using ACTION_SEND. Facebook will popup > > > as an app capable of handling this, but fails to handle the intent > > > correctly. Using this:
> > > Intent intent = new Intent(Intent.ACTION_SEND); > > > intent .setType("text/plain"); > > > intent .putExtra(android.content.Intent.EXTRA_TEXT, "This is a > > > test."); > > > startActivity(Intent.createChooser(intent, "testing..."));
> > > I read that the problem is that while Facebook has registered as > > > supporting text/plain, it can only actually deal with urls.
> > > If this is really a problem, is there a way I can somehow explicitly > > > remove Facebook from the list of applications that can handle my > > > ACTION_SEND request? Or somehow modify my intent to specifically deal > > > with Facebook?
> > I don't know about the latter. If you are willing to roll your own > > chooser, the former should be possible. The underlying PackageManager > > methods that support the chooser, such as queryIntentActivities(), would > > allow you to find miscreants and filter them out of your list. You'd need > > to present that list to the user, though.
FYI: This is really a bug with Facebooks Facebook app (it incorrectly directs to the mobile link sharing). If you use ACTION_SEND and chose other Facebook apps (I think I tested FBabble), it works.
On Dec 17, 10:41 am, "Mark Murphy" <mmur...@commonsware.com> wrote:
@Mark Thanks for the link, that's basically exactly what I need to do this.
@Craig Yeah, it definitely looks like an issue with the Facebook app. I have to find a workaround for this, my users will just think it's a bug with my app rather than Facebook. One other benefit is that I can use this workaround to possibly customize the text sent to some of the well-known twitter apps (shorten to ~100 characters). Of course, I guess this only works if their package names stay the same.
Thanks
On Dec 16, 6:51 pm, CraigsRace <craig...@gmail.com> wrote:
> FYI: This is really a bug with Facebooks Facebook app (it incorrectly > directs to the mobile link sharing). If you use ACTION_SEND and chose > other Facebook apps (I think I tested FBabble), it works.
> On Dec 17, 10:41 am, "Mark Murphy" <mmur...@commonsware.com> wrote:
> > > How could I find the cool little icons that each app uses to go with > > > my own picker dialog?
> > getApplicationInfo() or getActivityInfo() on PackageManager should have > > what you need.
> > You can also take a look at my Launchalot sample for some ideas:
To follow up on this, the code that Mark provided pretty much has everything you need to do the filtering. When the user clicks an item in the presentation list, Mark has something like:
ResolveInfo launchable = mAdapter.getItem(position); ActivityInfo activity = launchable.activityInfo; ComponentName name = new ComponentName (activity.applicationInfo.packageName, activity.name);
and you can do something like this to check if it's the Facebook app:
if (activity.name.equals("com.facebook.katana.ShareLinkActivity")) { // modify intent data EXTRA_TEXT to only contain a link for example. }
of course you're back to seeing the bad behavior again if facebook releases an update and changes that package/activity name,
Thanks, Mark
On Dec 16, 6:57 pm, Mark Wyszomierski <mar...@gmail.com> wrote:
> @Mark > Thanks for the link, that's basically exactly what I need to do this.
> @Craig > Yeah, it definitely looks like an issue with the Facebook app. I have > to find a workaround for this, my users will just think it's a bug > with my app rather than Facebook. One other benefit is that I can use > this workaround to possibly customize the text sent to some of the > well-known twitter apps (shorten to ~100 characters). Of course, I > guess this only works if their package names stay the same.
> Thanks
> On Dec 16, 6:51 pm, CraigsRace <craig...@gmail.com> wrote:
> > FYI: This is really a bug with Facebooks Facebook app (it incorrectly > > directs to the mobile link sharing). If you use ACTION_SEND and chose > > other Facebook apps (I think I tested FBabble), it works.
> > On Dec 17, 10:41 am, "Mark Murphy" <mmur...@commonsware.com> wrote:
> > > > How could I find the cool little icons that each app uses to go with > > > > my own picker dialog?
> > > getApplicationInfo() or getActivityInfo() on PackageManager should have > > > what you need.
> > > You can also take a look at my Launchalot sample for some ideas: