2016-12-29 23 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 –