【问题标题】:How do I know if users have really turned GPS/Network on after directing them to the settings page?在将用户引导至设置页面后,我如何知道用户是否真的打开了 GPS/网络?
【发布时间】:2013-02-20 11:54:26
【问题描述】:

我正在构建一个需要 GPS 或网络操作的定位应用程序。我希望能够将用户引导至 GPS 或无线设置,以强制他们在未打开时将其打开。我的问题是,我如何检查他们是否真的在设置页面后打开了提供程序?

以下是引导用户进行设置的常用代码。之后我该怎么办?

LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
    boolean enabled = service
            .isProviderEnabled(LocationManager.GPS_PROVIDER);
    if (!enabled) {
        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivity(intent);
    } 

【问题讨论】:

    标签: android gps settings provider


    【解决方案1】:

    使用 startActivityForResult 代替 startActivity。然后在 onActivityResult 中再次检查 isProviderEnabled。这应该可行,除非 idProviderEnabled 在您拥有 GPS 同步之前不会返回 true,我认为情况并非如此。同样的事情应该适用于wifi。

    【讨论】:

      【解决方案2】:

      之后我会做什么?

      什么都没有。

      您大概(希望?)检查您是否可以在您的活动的onResume() 中使用 GPS。当控制从设置活动返回到您的活动时,将再次调用该逻辑。因此,您将再次经历相同的逻辑。

      【讨论】:

      • 谢谢。因此,这是否意味着我之后将拥有完全相同的代码,即当启用提供程序时,我将拥有相同的代码位来处理结果
      • @JohnathanAu: startActivity() 是异步的。我不知道“启用提供程序时处理结果”是什么意思。如果您的意思是在您的LocationListener 中,我会强烈 鼓励您不要 将它们扔回设置活动中。如果他们只是禁用 GPS,他们可能有原因。更优雅地处理它。
      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 2017-05-04
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多