【问题标题】:Safeguard against "a matching Activity may not exist" in android settings防止在 android 设置中出现“匹配的 Activity 可能不存在”
【发布时间】:2013-11-29 20:23:46
【问题描述】:

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 ?
}

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

【问题讨论】:

    标签: android android-intent android-activity android-settings


    【解决方案1】:

    如果我阅读正确,例如抛出运行时异常 (NPE)

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

    我很想使用更具体的东西,尽管像 ActivityNotFoundException - 但够了吗?

    应该是的。

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

    【讨论】:

    • resolveActivity() 听起来对于一些无论如何都不应该失败的东西来说代码太多了——我去尝试捕获。谢谢:)
    • @Mr_and_Mrs_D:请注意,即使设备支持特定的设置 Intent 操作,特定的 用户 可能无法访问它,如果它们正在运行Android 4.3+ 平板电脑上的受限配置文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2011-10-03
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多