3

I have a couple of Bible apps on my phone. Sometimes, other apps link to a Bible verse, but they usually either embed a Bible viewer in the app or only work with a particular app.

I would like to be prompted for an app in the same way that one is prompted for a browser when clicking a link. But this doesn't happen. Why?

Is it the fault of:

  1. The app generating the link;
  2. The Bible app(s) I have installed;
  3. Android itself; or
  4. Some combination of the above?

I'm running Android 4.0.1 (MIUI) on an HTC/Google Nexus One.

10

Short and put in lay terms:

There's no standard defined on how to pass this information between apps, so there are no two apps who can interact the way you want.

Longer and with some more detailed information:

The app-selection menu for e.g. a browser or a homescreen only appears when multiple apps announce their being-available for a certain service, and only when this service is called (to put it in easy words; the longer and more technical variant talks about intents and listerners). While web-browsers and homescreens are somehow "generic services" existing on all Android devices, there are standard "intents" defined (see e.g. this question on stackoverflow for opening a page in a browser -- or this question here which probably explains it even better).

As long as there is no corresponding intent (with a defined API for how to pass it the specific chapter:verse to show), your wish can not be fulfilled. Moreover, application developers must implement this into their apps before you can use it.

As to my knowledge neither such API exists nor is it implemented -- there cannot exist any programs acting according to your wishes (except, of course, both are from the same developer; if two or more agreed on terms of how to handle this, that already would mean defining an API).

  • Thanks for your detailed answer. There's one thing that I'm not yet clear on: Is there some formal process that must be followed to set up an appropriate API, or would it be enough for the developers of relevant apps to merely agree on some suitable API? – Scott Severance Jul 13 '12 at 18:07
  • IMHO, technically both comes to the same end. If you take e.g. apps with support for Tasker -- here Tasker established an API, and other developers use it. This worked mainly due to the popularity of Tasker, I guess -- who would be the "central point" in your case, where multiple apps shall serve multiple other apps? Maybe if one comes up with a good API, others will use it as well. Easiest way for them would be using the "share with" feature. But I am no developer ;) – Izzy Jul 13 '12 at 18:52
0

In addition to @Izzy 's excellent answer, I've had some observations of my own over the years:

  • You can copy an application (through ADB or a file manager such as X-plore) to your desktop and rename extension to .zip (or in X-plore, you can long-press and directly open-as .zip). Extract if necessary, then look for a file called AndroidManifest.xml. Open this file with your preferred text editor (I use Notepad++), and you'll see a bunch of text. Generally, some (or even most) may be obfuscated, but there will generally be blocks of text that are human-readable (you may need to scroll down). If you used X-plore instead, open the file using the internal text editor, and choose to edit the text contents; this will launch the editor rather than the viewer, which will eliminate a lot of formatting characters and make the contents more readable. Among the contents, note that you'll see some intents being listed out, as well as different permissions flags, etc. This is one way to more directly examine possible intent calls.
  • Another method, which also makes it possible to call upon these as shortcuts (where possible, compatible, and permissible), I'll be quoting my own answer from this post:

    1) Go to G Play Market and install Nova Launcher.
    2) Skip all the setup and go straight to Home screen with Nova as default launcher (since you're just testing functionality at this point)
    3) Long press your background and select Widgets, then scroll down to Nova Launcher and find the "Activity" widget (for me it's the second widget); long-press then drag to an empty space on Home Screen
    4) Once you let go to set the widget, an overlay prompt will come into focus and start loading. Depending on your device and number of apps installed, this may take a minute or two, so don't be alarmed. Once it finishes loading, scroll down to your app and locate the activity thread you're looking for and select it (you can long-press them one by one to test the function as well, it will return you back to the previous overlay prompt if the thread didn't cause a crash...if it does, you'll have to restart from step 3.
    ... NOTE: I am enrolled in the Beta, and have the Prime (paid) version, so I'm not sure if that might affect this specific function or not. You can likely purchase for testing and request refund if necessary.

  • Another neat feature of X-plore (not sure if this is universal to other file explorer apps as well or not), you can attempt to share any file or list entry and choose to attempt to open-as a) specific MIME type, e.g., Video, Picture, Document, etc; or b) open-as wildcard (*), and see all possible choices. Keep in mind though, this is technically circumventing the intended usage scenarios the developers typically anticipate, and can sometimes not work where it should or work where it it should not (and in the case of the latter, I bear no liability for what may ensue). From what I've experienced, if you throw archive containers (e.g., .rar) and/or SMB file access into the mix, some unexpected behavior may also occur. Just to even things out though, here's an example of a positive use case: having a media app (e.g., MX Player) that doesn't natively support a particular extension (e.g., .gif) -- when added manually through settings, MX Player will remove the entry on refresh -- successfully play the file regardless (NOTE: in this example, HW and HW+ video decoders seem not to work but SW does).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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