Design. Build. Plug into Skype.

Skype URI Tutorial: Android Apps

How can I use Skype URIs in my Android apps?

You can use Skype URIs in your Android apps, for example, tapping a contact’s picture might start a Skype audio call. Once you have constructed the appropriate Skype URI, use an Android Intent to initiate its actions.

Keep in mind these two important points regarding the Skype for Android client:

  • Component package name—com.skype.raider
  • Component class name—com.skype.raider.Main
/**
 * Initiate the actions encoded in the specified URI.
 */
public void initiateSkypeUri(Context myContext, String mySkypeUri) {

  // Make sure the Skype for Android client is installed
  if (!isSkypeClientInstalled(myContext)) {
    goToMarket(myContext);
    return;
  }

  // Create the Intent from our Skype URI
  Uri skypeUri = Uri.parse(mySkypeUri);
  Intent myIntent = new Intent(Intent.ACTION_VIEW, skypeUri);

  // Restrict the Intent to being handled by the Skype for Android client only
  myIntent.setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main"));
  myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  // Initiate the Intent. It should never fail since we've already established the
  // presence of its handler (although there is an extremely minute window where that
  // handler can go away...)
  myContext.startActivity(myIntent);

  return;
}

How can I determine if a Skype client is installed?

Your Android app can use the PackageManager.getPackageInfo method to determine if a Skype client is installed on the device:

/**
 * Determine whether the Skype for Android client is installed on this device.
 * /
public boolean isSkypeClientInstalled(Context myContext) {
  PackageManager myPackageMgr = myContext.getPackageManager();
  try {
    myPackageMgr.getPackageInfo("com.skype.raider", PackageManager.GET_ACTIVITIES);
  }
  catch (PackageManager.NameNotFoundException e) {
    return (false);
  }
  return (true);
}

What can I do if a Skype client is not installed?

If the Skype client is not installed, your app should alert the user, and direct them to the Android Market or Google PlayStore. Ideally, your app should use a market: scheme Intent to navigate directly to the Skype for Android install page.

/**
 * Install the Skype client through the market: URI scheme.
 * /
public void goToMarket(Context myContext) {
  Uri marketUri = Uri.parse("market://details?id=com.skype.raider");
  Intent myIntent = new Intent(Intent.ACTION_VIEW, marketUri);
  myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  myContext.startActivity(myIntent);

  return;
}