2016-12-29 81 views
1

转动这是我的代码:异常而对GPS

public class MainActivity extends AppCompatActivity { 

    @Override 
    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); 
     sendBroadcast(intent); 
    } 
} 

这是logcat中的错误:

致命异常:主 工艺:com.example.satyajittarafdar.gps_on_automatic, PID:20469 java.lang.RuntimeException:无法启动活动 ComponentInfo {com.example.satyajittarafdar.gps_on_automatic/com.example.satyajittarafdar.gps_on_a utomatic.MainActivity}: java.lang.SecurityException异常:权限拒绝:不允许从PID = 20469, UID = 10240 发送 广播android.location.GPS_ENABLED_CHANGE在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2429) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 在android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java :1357) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5459) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 引起:java.lang.SecurityException:权限拒绝:不允许 发送广播android.location.GPS_ENABLED_CHANGE from pid = 20469, uid = 10240 at android.os.Parcel.readException(Parcel.java:1620) 在android.os.Parcel.readException(Parcel.java:1573) 在 android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3128) 在android.app.ContextImpl.sendBroadcast(ContextImpl.java:767) 在 android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:396) 在 com.example.satyajittarafdar.gps_on_automatic.MainActivity.onCreate(MainActivity.java:19) 在android.app.Activity.performCreate(Activity.java :6259) at android.app.Instrumentation.callActivityOnCreate(Instrumentatio n.java:1130) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2382) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 在android.app.ActivityThread.-wrap11 (ActivityThread.java) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1357) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop( Looper.java:148) at android.app.ActivityThread.main(ActivityThread。Java的:5459) 在java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:728) 在com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:618)

回答

0

从android版本4.4开始,您无法以编程方式更改gps状态。

很好的解释为什么:Read this post

你应该这样使用什么意图向用户发送到PHOEN设置,并要求他到手动启用它。

+0

但在使用默认的谷歌地图,如果乌拉圭回合GPS是关闭的,那么它会自动打开只显示一个警报对话味精...它不会将设置打开。 –

+0

这是手动启动GPS的代码,其工作完好 意图myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(myIntent); 但我不想让它通过设置打开。 如果有任何代码,请帮助我。 Thanx预先 –

0

这不适用于公共API,并且您无法以编程方式从Android 4.4及更高版本更改GPS状态。您已准备好意图并将用户重定向到设置。

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

这里有一些参考:

https://stackoverflow.com/a/22529296/3758024

https://stackoverflow.com/a/20236331/3758024

+0

但是,虽然使用默认的谷歌地图,如果你的GPS关闭,那么它会自动打开,只显示一个提醒对话信息...它不会采取设置,使其开启 –

+0

这是代码手动开启gps并完美工作Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(myIntent);但我不想通过设置将其打开。如果有任何代码,请帮助我。提前Thanx –