7

Settings类中的大多数活动操作(用于启动各种设置活动)都带有警告:

在某些情况下,匹配的 Activity 可能不存在,因此请务必防范这种情况。

那么我该如何防范呢?

try {
    final Intent i = new Intent(Settings. ACTION_WIRELESS_SETTINGS); // say
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // not sure if needed
    startActivity(i);
} catch (Exception e) { // what should I catch here 
    // I would hate to catch Throwable, but should I ?
}

例如,如果我正确阅读了此内容,则会引发运行时异常 (NPE)。我很想使用一些更具体的东西ActivityNotFoundException——但这足够了吗?

4

1 回答 1

4

如果我正确阅读此内容,例如引发运行时异常 (NPE)

不,那是另一个问题。显然有效,因为崩溃来自设置本身,而Intent不是调用startActivity().

我很想使用一些更具体的东西,比如 ActivityNotFoundException - 但这足够了吗?

它应该是。

如果您对此感到担忧,或者宁愿积极主动,而不仅仅是打电话startActivity(),请先使用PackageManagerand resolveActivity()。如果返回null,则没有与 匹配的活动,Intent您应该尝试其他方法。

于 2013-11-16T12:18:01.743 回答