我该如何解决“Locmanager”?

时间:2013-07-28 22:37:47

标签: android

我对此代码有疑问:

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)进行静态引用。”

如何解决此问题?

2 个答案:

答案 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切割器,将locManager1locManager2之类的对象视为cookie。由那个千篇一律的人创造。

看起来很明显,千篇一律不能吃掉(消费)它所创造的饼干。同样,Java不允许您从cookie切割器引用(或使用)cookie上的方法。

这是为什么?因为cookie包含状态,而cookie切割器则不包含状态。饼干可以是绿色的(如果你在其中加入绿色食用色素)。这是cookie的状态,而不是cookie切割器。您不能在cookie切割器上调用getColor方法,除非您首先提供对cookie的引用。 cookie切割器没有颜色。

阅读static,对象和实例。