Android查看应用程序是否已禁用

时间:2016-04-19 07:24:07

标签: android android-intent

在我们的应用程序中,我们打算启动Skype。该方法如下所示:

public void startSkype(View view) {
    if (!isSkypeClientInstalled()) {
        openMarket();
        return;
    }
    final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("skype:" + getString(R.string.usr_name) + "?chat"));
    intent.setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main"));
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

在大多数情况下它运行良好,但到目前为止我们收到了崩溃

Caused by android.content.ActivityNotFoundException: Unable to find explicit activity class {com.skype.raider/com.skype.raider.Main};

尝试重现它一段时间后,我们发现如果应用程序在手机设置中设置为Disabled,则会发生这种情况(并非所有手机都有此设置)。那么有没有办法看看应用程序是否可用,或者我是否必须将方法包装在丑陋的try-catch块中?

1 个答案:

答案 0 :(得分:0)

您可以查看enabled的字段ApplicationInfo

  

启用公共布尔值   如果为false,则表示所有组件   在此应用程序中被视为禁用,无论他们是谁   单独设置启用状态。

     

参考http://developer.android.com/reference/android/content/pm/ApplicationInfo.html#enabled

例如:

ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo("package_name", 0);
boolean isAppEnabled = applicationInfo.enabled;