Adding Custom Mobile Protocols to Drupal

With the proliferation of mobile apps and Web sites on mobile devices, developers are often asked to integrate the two. Mobile apps can register a custom protocol with the mobile OS so that a link on a Web page such as <a href=”myapp://openapp”>Open in MyApp</a> will open MyApp on the user’s phone. An early example of this was to have links on phone numbers actually call the number on mobile phones.

On a recent project, I was asked to include a “Back to App” link on the site’s menu. “No problem,” I thought, “I’ll just set that as the destination of that menu item.” However trying to add myapp://openapp as a menu item destination lead to a

Notice: Undefined index: path in menu_edit_item_validate() (line 399 of //modules/menu/

The path '' is either invalid or you do not have access to it.

A little digging lead me to the problem: Drupal has a limited list of protocols it considers 'valid'. Fortunately, those are accessed via variable_get. Unfortunately, there is no admin page where you can edit that list. And, more confusingly, Drupal uses two different default values for the list of protocols ([email protected] includes the tel protocol but [email protected] does not). Finally, by default, Drupal doesn't set this variable in the database so the default value passed to variable_get is what gets used.

My solution was to add a hook_update_N to an existing (custom) module to add the protocol I needed.

 * Adds myapp:// protocol to the list of allowed protocols.
function example_update_7001(&$sandbox) {
  // From include/ @ 1336
  $protocols = variable_get('filter_allowed_protocols', array('ftp', 'http', 'https', 'irc', 'mailto', 'news', 'nntp', 'rtsp', 'sftp', 'ssh', 'tel', 'telnet', 'webcal'));
  $protocols[] = 'myapp';
  variable_set('filter_allowed_protocols', $protocols);

Not interested in writing an update hook? You can also set this directly in your settings.php file:

$conf['filter_allowed_protocols'] = array('ftp', 'http', ...);

I prefer the first option. If there is another module trying to add a protocol to the list, the second option would negate that. But you can't beat editing your settings.php for a quick-fix that avoids the need for a custom module.


I would like to find best adding and custom mobile protocols to drupal website. That was released many paper service reviews on this template. So we are all happy to get the great reviews and essays.

Add new comment

The content of this field is kept private and will not be shown publicly.