我对此代码有疑问:
boolean gpsStatus = locmanager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!gpsStatus) {
Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "network,gps");
}
我在这里找到了它:https://stackoverflow.com/a/10004614/2628458 我试图用“LocationManager”切换“locmanager”,但它没有奏效。它说:“不能从类型LocationManager对静态方法isProviderEnabled(String)进行静态引用。”
如何解决此问题?
答案 0 :(得分:0)
如果您想要打开gps,可以使用以下代码
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){
final Intent intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
intent.setData(Uri.parse("3"));
sendBroadcast(intent);
和关闭gps
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider.contains("gps")){
final Intent intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
intent.setData(Uri.parse("3"));
sendBroadcast(intent);
答案 1 :(得分:0)
您收到错误消息是因为您更改了对对象实例的引用:
locManager
引用该类:
LocationManager
对类的引用是 static。要理解这意味着什么,可以将类LocationManager视为cookie切割器,将locManager1
和locManager2
之类的对象视为cookie。由那个千篇一律的人创造。
看起来很明显,千篇一律不能吃掉(消费)它所创造的饼干。同样,Java不允许您从cookie切割器引用(或使用)cookie上的方法。
这是为什么?因为cookie包含状态,而cookie切割器则不包含状态。饼干可以是绿色的(如果你在其中加入绿色食用色素)。这是cookie的状态,而不是cookie切割器。您不能在cookie切割器上调用getColor
方法,除非您首先提供对cookie的引用。 cookie切割器没有颜色。
阅读static
,对象和实例。