5 Stimmen

Skype programmatisch von der Android-App aus starten

Ich rufe direkt mit dem Standard-Dialer von OS an:

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

Ist es möglich, Skype direkt von meiner Anwendung aus zu starten?

Ich versuche, eine Nummer wie folgt zu übergeben:

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

Die Übergabe der Nummer scheitert.

3voto

jamapag Punkte 9260

Sie müssen den Namen des Skype-Pakets kennen (z. B.: com.skype.Android), dann können Sie es starten:

PackageManager packageManager = getPackageManager();
startActivity(packageManager.getLaunchIntentForPackage("com.skype.android"));

1voto

Md. Sajedul Karim Punkte 6961

In Ihrem Fall kann der folgende Fall eintreten:

  1. Skype nicht installiert
  2. Skype ist deaktiviert
  3. Skype ist installiert

In den Fällen 1 und 2 können Sie nicht mit Skype telefonieren. Im Fall 3 können Sie über Skype anrufen. Bitte prüfen Sie die folgenden Fälle, um skype zu starten:

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();
}

Prüfen Sie, ob die App installiert ist oder nicht:

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;
    }

Prüfen Sie, ob die App aktiviert ist oder nicht:

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;
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X