Take the 2-minute tour ×
Android Enthusiasts Stack Exchange is a question and answer site for enthusiasts and power users of the Android operating system. It's 100% free, no registration required.

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"?

share|improve this question
add comment

4 Answers

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.

share|improve this answer
add comment

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);
share|improve this answer
1  
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 Jun 1 '12 at 13:24
add comment

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).

share|improve this answer
add comment

I would use a decompiler https://play.google.com/store/apps/details?id=com.dexplorer look in the manifest file, it will have the intents that the app uses.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.