Запустите приложение Skype из Android программно - PullRequest
4 голосов
/ 20 июня 2011

Я создаю вызов напрямую, используя номеронабиратель os по умолчанию:

Intent call = new Intent(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:" + phoneNo));
startActivity(call);

Можно ли запустить Skype прямо из моего приложения?

Я пытаюсь передать номер следующим образом:

PackageManager packageManager = getPackageManager();
Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider");
skype.setData(Uri.parse("tel:65465446"));
startActivity(skype);

Передача номера не удалась.

Ответы [ 2 ]

3 голосов
/ 20 июня 2011

Вам нужно знать имя пакета Skype (что-то вроде: com.skype.android), затем вы можете запустить его:

PackageManager packageManager = getPackageManager();
startActivity(packageManager.getLaunchIntentForPackage("com.skype.android"));
0 голосов
/ 10 февраля 2019

В вашем случае может произойти следующее:

  1. Skype не установлен
  2. Skype отключен
  3. Skype установлен

Для случаев 1 и 2 вы не сможете звонить по скайпу. Для случая 3 вы можете позвонить через Skype. Пожалуйста, проверьте ниже случаи для начала Skype:

String appName = "Skype";
String packageName = "com.skype.raider";
openApp(context, appName, packageName);

public static void openApp(Context context, String appName, String packageName) {
    if (isAppInstalled(context, packageName))
        if (isAppEnabled(context, packageName))
            context.startActivity(context.getPackageManager().getLaunchIntentForPackage(packageName));
        else Toast.makeText(context, appName + " app is not enabled.", Toast.LENGTH_SHORT).show();
    else Toast.makeText(context, appName + " app is not installed.", Toast.LENGTH_SHORT).show();
}

Проверьте, установлено приложение или нет:

private static boolean isAppInstalled(Context context, String packageName) {
        PackageManager pm = context.getPackageManager();
        try {
            pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException ignored) {
        }
        return false;
    }

Проверьте, включено приложение или нет:

private static boolean isAppEnabled(Context context, String packageName) {
        boolean appStatus = false;
        try {
            ApplicationInfo ai = context.getPackageManager().getApplicationInfo(packageName, 0);
            if (ai != null) {
                appStatus = ai.enabled;
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return appStatus;
    }
...