【问题标题】:Launch Skype from Android App programmatically以编程方式从 Android 应用程序启动 Skype
【发布时间】:2019-02-10 12:42:36
【问题描述】:

我通过以下方式直接使用默认操作系统拨号器创建呼叫:

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

传号失败。

【问题讨论】:

标签: java android android-intent android-activity skype


【解决方案1】:

您需要知道 Skype 软件包名称(例如:com.skype.android),然后您才能启动它:

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

【讨论】:

  • 可能的Skype包名:com.skype.raider
  • 它有效,但我还需要传递电话号码。 Skype。我在问题中尝试过...
【解决方案2】:

在您的情况下,可能会发生以下情况:

  1. Skype 未安装
  2. Skype 已禁用
  3. Skype 已安装

对于情况 1 和 2,您将无法拨打 Skype。对于案例 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;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2011-03-27
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多