【问题标题】:How can i On GPS Automatically without asking User?我如何在不询问用户的情况下自动打开 GPS?
【发布时间】:2018-02-19 13:37:41
【问题描述】:

我已经尝试过这段代码,但它不能正常工作。

    Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
    intent.putExtra("enabled", true);
    sendBroadcast(intent, Manifest.permission.WRITE_SECURE_SETTINGS);

得到这个错误:

java.lang.RuntimeException:无法启动活动 组件信息{com.setting/com.setting.activity.TraceLocationActivity}: java.lang.SecurityException:权限拒绝:不允许发送 从 pid=28258 广播 android.location.GPS_ENABLED_CHANGE, uid=10395 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2793) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:156) 在 android.app.ActivityThread.main(ActivityThread.java:6523) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832) 引起:java.lang.SecurityException:权限拒绝:不允许发送 从 pid=28258 广播 android.location.GPS_ENABLED_CHANGE, uid=10395 在 android.os.Parcel.readException(Parcel.java:1665) 在 android.os.Parcel.readException(Parcel.java:1618) 在 android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3533) 在 android.app.ContextImpl.sendBroadcast(ContextImpl.java:1012) 在 android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:426) 在 com.setting.activity.TraceLocationActivity.onCreate(TraceLocationActivity.java:46) 在 android.app.Activity.performCreate(Activity.java:6915) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2746) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:156) 在 android.app.ActivityThread.main(ActivityThread.java:6523) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

【问题讨论】:

  • 你不能这样做
  • 你不应该这样做。启用 GPS 不取决于您。
  • 权限的全部意义在于允许用户确定他们想向应用提供多少潜在的个人信息。 GPS 位置是个人信息(用户在给定时间的确切位置),因此请设计您的应用以请求此权限并优雅地处理任何拒绝。
  • @MichaelDodd:在这种情况下,我不相信有可以用来打开/关闭 GPS 的权限。 OP 必须将用户引导至 Android 设置应用程序(即使用 ACTION_LOCATION_SOURCE_SETTINGS)。
  • @Michael Aha,我看错了。但是,我只是在一个启用 GPS 的应用程序(在我的例子中是 Runkeeper)上尝试了这个,我得到一个对话框提示我启用 GPS,所以它必须可以不进入设置。 编辑它是LocationSettingsRequest - developers.google.com/android/reference/com/google/android/gms/…

标签: android


【解决方案1】:

如何在不询问用户的情况下自动开启 GPS?

出于明显的隐私和安全原因,这是不可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多