7

I have an app (Smart Tools) that consists of mutiple distinct subapps. I would like to have an shortcut for a single subapp, so I wouldn't have to open it through the app's main menu.

I'm pretty sure the app uses some specific intent broadcast to open any of the subapps. I know Tasker can be used to broadcast a custom intent to the Android system. If I understand correctly, if I just mimic the intent the Smart Tools main menu uses to invoke the specific subapp, I could start the subapp directly with a Tasker shortcut.

But for that, I need to be able to mimic the intent. Since Smart Tools isn't open source, how do I find out what intent the app uses "internally"?

5 Answers 5

5

Easiest solution: Ask the developer!

Reason: It's the most reliable source if he/she answers. You cannot say easily what parameters to set and if it's even allowed to start other activities from your own 'intent launcher' (be it Tasker or something else).

I had a quick look at it, it's a paid app and a small dev. Often those developers really care and respond quickly, especially if it's a paid app. I did so with Titanium Backup in the past and was positively suprised how easy it was.

If you have the information, you can also use the free Manual intent shortcuts app to create a custom launcher.

Google Play has a 'contact developer' button just below the overview description of (most?) apps. Having a look at smart tools, you see that it's there: androidboy1 (at) gmail com

What you could also do:

UC Berkeley has a cool project:
ComDroid. A static analysis tool for identifying application communication-based vulnerabilities

It's a web service where you can upload your .apk to. (Since you ask an advanced question I guess you know how to get the apk of your app). After the upload search the analysis for Malicious Activity Launch, this is the information you want. You might be lucky to misuse it using Tasker, etc.

5

You can use adb to check what intents an app uses. The steps to do this are:

  • Enable developer options
  • Under developer options turn on adb debugging
  • Connect phone to computer
  • Get adb logs and grep out intents: adb logcat | fgrep -i intent
  • Trigger the intent on your phone
  • Inspect logs to find the details of the intent
3

You need to have the manifest.xml of the APK. If you rename the .apk to a .zip you can open it. Hopefully you can read the Manifest else you need to decompile the APK (lots of tutorials online)

Then you need to lookup the Intents it listens to and use that. Or use the component name and launch it explicitly. How to do this in Tasker is unknown to me, to do it programmaticly:

Intent intent = new Intent();
intent .setComponent(new ComponentName("com.package.name","com.package.name.activity"));
startActivity(intent);
1
  • 4
    apktool (code.google.com/p/android-apktool) is a much better way to do this than unzipping. Manifests will often be in a binary format, which apktool will extract.
    – TREE
    Commented Jun 1, 2012 at 13:24
2

If your device is rooted, you can install AutoRun Manager from the market (for just looking up the listeners, the free version will do as well). Use its advanced mode -- and there it will list up all apps which have listeners (which listen to intents). Tap the app you want to investigate, and all of its registered intent listeners are shown. Now you can even disable the ones which annoy you (e.g. Google Maps service listener on network change to pry your location).

1

I would use a decompiler Dexplorer look in the manifest file, it will have the intents that the app uses.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .