如何自动启用GPS

时间:2015-08-03 05:28:34

标签: android

我使用此代码将获得安全性异常。

private void turnGPSOn(){
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){ //if gps is disabled
    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")); 
    sendBroadcast(poke);
}
}

private void turnGPSOff(){
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

if(provider.contains("gps")){ //if gps is enabled
    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")); 
    sendBroadcast(poke);
}
}

如何修复问题自动启用GPS。

2 个答案:

答案 0 :(得分:1)

出于安全目的,Google开发人员阻止了之前正常工作的两种方法。 所以你不能以编程方式启用GPS

答案 1 :(得分:1)

  

现在没有方法/解决办法以Pps方式启用Gps。

如果没有启用gps,你可以做的是要求用户打开gps。

首先检查是否启用了gps

public boolean check_Gps(Context context) {
    LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    return statusOfGPS;
}

然后打开gps Actvity,如果没有启用。

if (!check_Gps(Your_Activity_Name.this)) {

   open_Gps_Activity(Your_Activity_Name.this);


 }

  public void open_Gps_Activity(Context context) {
    final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
}

并且您还可以显示祝酒告诉用户,如果您不打开gps,您的应用将无法正常运行。