Regular readers know I’m a big fan of bookmarklets. I use dozens of them in my desktop and mobile browsers to do things like post links to Delicious and Twitter, subscribe to feeds in Bloglines, expand text-areas and fix unreadable color combinations on websites. I’ve written about using bookmarklets in mobile browsers here on WapReview and I maintain a small archive of Opera Mini compatible bookmarklets at o.yeswap.com. So naturally when Google generously gave me an HTC Evo Android phone at Google I/O, I wanted to use some of my favorite bookmarklets in Android.
Unfortunately, the Android browser doesn’t support bookmarklets. Update: Android 2.2 (Froyo) and latter fully support bookmarklets. The problem with older Android versions is that when you try to save a bookmarklet, Android adds “http://” in front of the JavaScript code that is the bookmarklet, breaking it. But I’ve found a bunch of workarounds that let me do most of the things I use bookmarklets for in the Android browser and to even use some real bookmarklets.
First as most Android users know, there is a Share Page option in the browser’s menu (image above, left). By default, it lets you share the URL of the current page in an email or text message. It does this by invoking the Android Messaging, Email or Gmail app and passing it the URL. Many third party Android apps also add themselves into the Share menu including the official Facebook app, HTC’s Friend Stream and Peep, the Bluetooth File Transfer app and every Twitter client I’ve used.
There’s one annoying problem with page sharing as it’s implemented in the browser, is that with most apps it only shares the URL. When I’m sharing a link in a Tweet or a text I like to have the message pre-populated with the page title which I use as the basis for descriptive text to include along with the URL. There’s a fix for that in the form of a free app called Share More (Android Market Link) The app has no GUI, it just adds a Share with Title option (image above, left) to the browser’s share Menu. When clicked it retrieves the page title and then takes you back to the Share menu where you can send the URL plus the title to any browser’s other sharing destinations.
A must have free app for bookmarklet users is Bookmarklet (Android Market Link) which lets you add your choice of over 50 predefined pseudo bookmarklets to the browser (image above, right) including Google Translate, Alexa, Digg, Slashdot, Delicious, AIM, Evernote, Friend Feed, Google Buzz, My Space and Read It Latter. You can even add your own bookmarklets using the app. The GUI for adding bookmarklets doesn’t accept JavaScript though and only seems to work with services that expect the URL and optionally the page title to be passed as GET parameters using the “?param=”, &parm=” syntax. I couldn’t get it to work with services that expect slash or semi-colon separated arguments like Bloglines or Dataopedia.com.
For Delicious there’s a great free app named Beelicious (Android Market Link) that adds itself to the Share Menu and lets you share page URLs and Titles with the social bookmarking service. Beelicious even maintains a local copy of all the Delicious Tags that you have used and suggests tags as you type (image below, left).
With Rerware’s MyBookmarks (Android Market Link) you can actually use real JavaScript bookmarklets in the Android browser. It’s a free Android app that can import all or some of your Firefox, IE or Chrome bookmarks and bookmarklets into the Android browser. To use it you export your desktop browser’s bookmarks to a file. Then run My Bookmarks, which shows you your phone’s device ID (MEID or IMEI). Go to the web form at rerware.com/MyBookmarks/ to enter your device ID and upload your exported bookmarklets file. Back in MyBookmarks on your phone, choose “Import your bookmarks from Rerware.com” (image above, right). You have the choice of importing all of them or picking and choosing which ones you want to import. Importing one by one is a bit tedious if you have a lot of bookmarks as you have to respond to a “Add Bookmark? Yes/No” prompt for every single one (image below, left). If you know your way around HTML is easier to edit the export file to remove unwanted bookmarks before uploading it.
MyBookmarks seems to import bookmarklets perfectly, but only a small percentage of the ones I imported actually worked. None of my bookmarklets that manipulated the current page to zap colors, replace links with URLs etc. worked. Neither did bookmarklets that used a JavaScript alert to display Page Rank, meta descriptions or cookies. Even most bookmarks that simply open another site and pass the page URL such as a Google Translate bookmarklet didn’t work. The problem seems to be that the browser can’t really handle most bookmarklets. Among other things, it seems to choke on urlencoded characters like %27 (single quote) that are common in bookmarklets. Urlencoding replaces ASCII characters that are illegal in URLs with a “%” followed by the character’s hexadecimal representation. You want to urlencode bookmarklets so that they are valid URLs and can be shared as links on web pages. I was able to fix several of the non-working bookmarklets by editing them in the browser and replacing all occurrences of %27 with single quotes (image above, right).
I really like the Android browser, it’s fast, renders most pages really well, can open new tabs in the background and has some of the best support of any mobile browser for HTML5 features like geolocation, <video> and local storage. But I really wish it handled bookmarklets properly like Mobile IE, Safari, Opera and Symbian 5th Edition WebKit do. The Sharing feature is cool but its limited by the need to install an app for each new sharing target rather than simply adding a JavaScript bookmarklet.
Thank you very much for sharing :) After Opera abandoning Opera Link on their latest browsers, something like Beelicious turns out a very handy way to put my Delicious account into good use again.
Speaking of Opera Link. It never worked for me in Opera Mobile Classic on two different devices. It would just display “Synchronizing your data…” forever without synchronizing anything. Yesterday I tried it again and it worked on both! It looks like Opera fixed something on the back end. Maybe that means Link is being prepped for inclusion in the Opera Webkit Browser
Thanks for adding a great post, fingers crossed this gets addressed in subsequent releases.
This is a year old post. Android OS since 2.2 fully supports bookmarklets.
Pingback: links for 2010-07-23 — contentious.com