【问题标题】:Android Settings.ACTION_LOCATION_SOURCE_SETTINGS resulting in crashAndroid Settings.ACTION_LOCATION_SOURCE_SETTINGS 导致崩溃
【发布时间】:2015-10-31 11:48:25
【问题描述】:

我正在使用以下代码行将用户重定向到位置设置屏幕

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0); 

它在大多数设备上都可以正常工作,但在某些三星设备上会崩溃,但有例外:

android.content.ActivityNotFoundException:找不到要处理的活动 意图 { act=android.settings.LOCATION_SOURCE_SETTINGS }

有没有更好的方法来处理位置设置?

【问题讨论】:

    标签: android google-play-services


    【解决方案1】:

    有没有更好的方法来处理位置设置?

    几乎所有Settings 类上的操作字符串都在 JavaDocs 中提到该活动可能不存在,因此您应该适当地处理它(例如,将您的 startActivity() 调用包装在 ActivityNotFoundException 处理程序中)。

    在这种情况下,除了ACTION_SETTINGS 之外,没有明显的备用选项。您可能会显示Snackbar 或来自异常处理程序的对话框,表明此设备没有直接第三方访问位置设置屏幕的权限。

    还要注意startActivityForResult() 在您的情况下是无用的;只需使用startActivity()。

    【讨论】:

    • 谢谢。我刚刚意识到,在使用系统提供的活动时,我没有在我的应用程序的任何地方处理 ActivityNotFoundException;现在将进行彻底的审查:)
    • 是否可以将用户带到确切的应用程序以获得位置权限?还是必须是设备上所有应用的整个位置设置屏幕。
    • @IgorGanapolsky:位置权限,如ACCESS_FINE_LOCATION,通过Android 6.0+ 上的标准运行时权限进行处理。位置是否启用 通常是设备范围的设置。使用问题中的Intent 操作将用户引导到那里,并使用try/catch 块以防制造商不支持该Intent 操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多