【问题标题】:How to enable GPS in android coding [duplicate]如何在android编码中启用GPS [重复]
【发布时间】:2011-07-25 19:10:52
【问题描述】:

可能重复:
Enable GPS programatically like Tasker

好的,我知道之前有人问过同样的问题,但所有答案都是“否”。事实证明,启用 GPS 可以在编码中完成。不相信?试用一个名为“LOOKOUT”的应用程序。我相信有一些解决方法可以实现这一目标。

我已经阅读了lookout AndroidManifest.xml,我发现他们只使用了

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

有人知道他们是如何做到这一点的吗?背后的秘密是什么?只有当应用程序作为系统应用程序安装并且还需要两个权限时,我个人才设法做到这一点

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

我的代码:

Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true);

谢谢。

【问题讨论】:

    标签: android gps


    【解决方案1】:

    根据 Lookout 支持论坛上的 this post,他们无法以编程方式启用 GPS。

    如果 Lookout 可以远程启用 GPS 接收器,然后使用该服务,然后将其关闭 - 我们会,但不幸的是,没有“为 Lookout 以外的所有设备禁用 GPS”,如果您禁用了 GPS 接收器,则没有应用程序可以利用它。 启用 GPS 接收器需要用户手动执行。

    编辑:看起来在新版本的 Lookout 中,他们现在最有可能利用安全漏洞来实现这一点。不能保证继续工作,但according to an open Android bug report from April 2010,类似于以下代码将成功以编程方式启用/禁用 GPS(至少在修复缺陷之前):

    private void toggleGPS(boolean enable) {
        String provider = Settings.Secure.getString(getContentResolver(), 
            Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
    
        if(provider.contains("gps") == enable) {
            return; // the GPS is already in the requested state
        }
    
        final Intent poke = new Intent();
        poke.setClassName("com.android.settings", 
            "com.android.settings.widget.SettingsAppWidgetProvider");
        poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
        poke.setData(Uri.parse("3"));
        context.sendBroadcast(poke);
    }
    

    另外,请参阅问题"Enable GPS programmatically like Tasker"XDA thread mentioned there,了解有关人们如何使用此方法的更多讨论。

    如果您确实使用此方法,则应向您的应用程序的潜在用户说明,因为这是一个巨大潜在的隐私问题。

    【讨论】:

    • 是的,那是旧版本。但这在新版本中是可能的。查看他们的帮助mylookout.com/help 您可以远程打开 GPS 吗? 可以! Lookout 尽可能高效地使用 Android 手机的 GPS 接收器。当 Android 设备请求定位时,Lookout 可以在定位运行时远程打开 GPS,然后再次将其关闭(定位可以运行几分钟以获得最佳定位结果)。这有助于节省手机的电池寿命。 Lookout 仅在您明确请求时使用 GPS 来获取您的位置。
    • 我也亲自测试过。它有效。
    • 我现在刚刚在有根设备上尝试过,我可以确认它确实能够启用 GPS(即使在完成后它也会保持启用状态)。我想知道他们是否仍然能够在非 root 设备上执行此操作。您是否在股票的非 root 手机上尝试过?
    • 嗨,Brian,是的,它也适用于非 root 手机。因为它在启用期间没有请求root权限。
    • 我已经用他们可能使用的方法编辑了我的答案。请注意,这是在利用安全漏洞,您的用户应注意这一点。
    猜你喜欢
    • 2011-04-30
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2011-06-10
    • 2021-11-12
    • 1970-01-01
    相关资源
    最近更新 更多