我使用此代码将获得安全性异常。
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。
答案 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,您的应用将无法正常运行。