在我们的应用程序中,我们打算启动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
块中?
答案 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;