How to start a Skype call from an Android app?

See this answer: https://stackoverflow.com/a/8844526/819355

Jeff suggests using a skype:<user name> instead of tel:<phone number>

After some studing of the skype apk with apktool, as suggested in that answer, I came up with this code, for me it's working:

public static void skype(String number, Context ctx) {
        try {
            //Intent sky = new Intent("android.intent.action.CALL_PRIVILEGED");
            //the above line tries to create an intent for which the skype app doesn't supply public api

                Intent sky = new Intent("android.intent.action.VIEW");
            sky.setData(Uri.parse("skype:" + number));
            Log.d("UTILS", "tel:" + number);
            ctx.startActivity(sky);
        } catch (ActivityNotFoundException e) {
            Log.e("SKYPE CALL", "Skype failed", e);
        }

    }

Refer to Skype developer: Skype URI tutorial: Android apps Also remember to add "?call" in your url. E.g

intent.setData(Uri.parse("skype:" + phoneNumber + "?call"));

Without it, Skype may not dial the number.


You should not include a specific class when calling an external app. Let the user decide of the application he/she wants to use. That's the way android has been designed and it's a better solution than obliging people to use a soft (moreover quite a slow, closed and inconvenient app to my mind).

In other words, just use the Uri, that's the job of skype of declaring its ability to capture such intents.