在android设置中防止"匹配的活动可能不存在"

Mr_*_*s_D 6 android android-intent android-activity android-settings

Settings类中的大多数Activity Actions(用于启动各种Settings活动)都带有警告:

在某些情况下,匹配的活动可能不存在,因此请确保您不会受到此类保护.

那我该如何防范呢?

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 ?
}
Run Code Online (Sandbox Code Playgroud)

如果我正确读取了这个,例如抛出了运行时异常(NPE).我希望能够使用更具体的东西ActivityNotFoundException- 但这样就够了吗?

Com*_*are 4

如果我正确地阅读了此内容,例如会抛出运行时异常(NPE)

不,那是其他问题。显然Intent有效,因为崩溃来自“设置”本身,而不是调用的应用程序startActivity()

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

它应该是。

如果您担心这一点,或者宁愿主动出击,而不仅仅是调用startActivity(),请首先使用PackageManagerresolveActivity()。如果返回null,则没有与 匹配的活动Intent,您应该尝试其他操作。

  • @Mr_and_Mrs_D:请注意,即使设备支持特定的“设置意图”操作,如果特定的*用户*在 Android 4.3+ 平板电脑上的受限配置文件上运行,则它们可能无法访问它。 (3认同)