Android and Linux

Monday, April 11, 2011

Light posting

Well, that's not new, I'm not a very prolific blogger, but posting may (or may not) be light for the next month. I'm buying a new house- literally, it just got built- and will be going crazy trying to get everything done and get moved. I'm not sure when I will move, I told someone that I will probably follow the internet. Once the internet gets turned off here and on there, I'm moving that day!

On the plus side, I will finally have an excuse to go nuts with X10. The house has tray ceilings in the living room and master bedroom, so I'm planning to put in some lighting like this which just begs to be controlled with X10 and a dimmer.

Then there's the rest of the house, I'm just itching to go X10 crazy on it.

Anyway, if I don't post much for the next month, don't get alarmed and call Dog The Bounty Hunter to look for me. I'll be around.

Tuesday, April 5, 2011

Get current url from Android browser

I've been using an app called Wave Launcher, which allows you to swipe a certain area of the screen to pop up a launch bar. The launch bar contains 5 icons which you can set up to open an app or shortcut. With Folder Organizer, you can have it open a folder of apps, or, even cooler, a folder full of Tasker tasks.

I wanted to create a Tasker task to open my computer's browser to the same url that my phone's browser is on. I can do this by copying the url and running a task to share it, but that's too much work. After much digging, I found a way to extract the current url from the browser database.
sqlite3 /data/data/ "SELECT * FROM bookmarks;" | tr '|' '\n' | grep http | tail -n1

If you go to on the phone and run that command, the output is

Using that, I can make a short script to make it open on my home computer via ssh:

#! /system/bin/sh
url=$(sqlite3 /data/data/ "SELECT * FROM bookmarks;" | tr '|' '\n' | grep http | tail -n1)
ssh -i /PATH/TO/SSHKEY USER@IP "firefox $url"

If I'm browsing a page on the phone and want to read it on the computer instead, I can swipe Wave Launcher and select the task that runs this command. This will grab the last url visited, so it doesn't matter if the browser is open or closed.

Saturday, April 2, 2011

shell launcher for sl4a scripts

Scripting Layer for Android, or SL4A is an app which allows you to run scripts such as perl and python on your phone. The cool thing about them is that they have full access to Android API calls, unlike the Android command line. But sl4a scripts can be invoked from the command line and here's a script to do it.

Everything from "am" to the end needs to be on one line, but it's too long to post it that way here and I've always found the typical way of splitting lines on the web with a backslash confuses people, so just make sure "am...}" goes on a single line or copy it from the QR code below.

To run it, just execute the script with the name of an sl4a script as an argument. e.g., if you name the script slsh you run "slsh"

#! /system/bin/sh
[ -z "$1" ] && exec echo "please specify the name of a script to run"
am start -a com.googlecode.android_scripting.action.LAUNCH_BACKGROUND_SCRIPT
-n com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher
-e com.googlecode.android_scripting.extra.SCRIPT_PATH /sdcard/sl4a/scripts/${1}

This could give you the ability to do virtually anything on the phone through the command line by invoking sl4a scripts. sl4a would do the hard work, of course, but this gives you a lower level access to it. You could, for example, probably use it to easily ssh into the phone from the computer and send a text message or get the GPS location.

Copy "slsh" to your phone's clipboard with this QR code:

Friday, April 1, 2011

New Tasker Forum

Pent has created a new discussion group called Tasker Pro in response to this thread where people lamented the lack of a good place where people could put their heads together and come up with cool Tasker solutions.