当前位置: 首页 > 知识库问答 >
问题:

如何在我的android应用程序中以编程方式打开GPS?

益麻雀
2023-03-14

如果我们使用此代码,我们会看到一条消息:搜索GPS。然而,仅示出了GPS符号;GPS实际上不起作用:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
    intent.putExtra("enabled", true);
    this.sendBroadcast(intent);   
}

为什么没用?以及如何使其正确工作?

共有1个答案

公英哲
2023-03-14

这是不允许的。如果你看一下这个bug报告,这个hack在Android 4.4中被颠覆了。它仍然可以在旧版本的操作系统上工作,尽管你现在不应该在任何地方使用它。引用该报告:

这不起作用...然而,它可能会导致一些东西做出反应,就好像GPS状态发生了变化——例如,HTC One S将在状态栏中显示GPS图标,即使GPS仍然被禁用。

这就解释了为什么你可以看到GPS图标,即使它实际上并没有打开。现在至于为什么你不能这样做...

Android的GPS技术会定期向Google发送位置数据,即使没有第三方应用程序实际使用GPS功能。在许多西方国家,这被视为对隐私的重大侵犯。这就是为什么谷歌强制要求在使用GPS功能之前征得用户同意。每当用户打开GPS时,都会看到以下对话框:

因此,不再可能以编程方式更改GPS设置,因为它需要用户的许可。程序员可以做的是通过调用将用户引导到GPS设置

startActivity(context, new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

并让用户做出选择。

有趣的是,如果您尝试在新的操作系统版本上发送< code>GPS_ENABLED_CHANGE广播,您会得到一个

java.lang.SecurityException: Permission Denial: 
    not allowed to send broadcast android.location.GPS_ENABLED_CHANGE

错误。如您所见,它是一个带有权限拒绝消息的 SecurityException

 类似资料:
  • 现在有了新的苹果地图实现,这只是向谷歌地图开放了移动Safari。我如何用iOS 6完成同样的行为?我如何以编程方式打开地图应用程序,并让它指向特定的位置/地址/搜索/什么?

  • 在Android 9中 我还在清单文件中添加了必需的权限。 当我运行这个程序时,它告诉我解析包错误时出现了问题。

  • 问题内容: 我正在开发一个短信阻止应用程序。直到果冻豆都可以正常工作。从奇特卡特(Kitkat)到棉花糖,它不起作用。我在Google上进行了搜索,每个人都建议使用征得用户的许可,以使其成为该手机的默认短信应用。 清单文件: 我使用了此代码示例。它显示一个带有手机短信应用程序的对话框。我的应用未显示在此列表中。 现在我也想在此列表中显示我的应用程序,因此用户可以从此列表中选择我的应用程序,它将是该

  • 问题内容: 我想使用来测试崩溃报告,但第一步是我需要使用代码在Android中模拟致命崩溃。 任何想法? 问题答案: 更新:也可以尝试这种创建方法, 并将其称为某处/ buttonClick 或直接抛出未捕获的异常 答对了!

  • 关于新的Android6.0(Marshmallow)版本,我有一个问题: 是否可以通过意图或类似的东西来显示特定应用程序的权限屏幕? 可以用下面的代码显示应用程序设置--有没有直接打开权限屏幕的模拟解决方案? 我已经对此做了一些研究,但我无法找到一个适当的解决办法。

  • 注意:我不想在Google Play商店上打开应用程序!这是我想要的游戏Play服务中的应用程序页面!