2012-09-16 34 views
1

标题说使用这一切,IM:NETWORK_PROVIDER在安卓ICS找不到4.1

public int onStartCommand(Intent get,int num1,int num2){ 

if (lm != null){ 

     lm.removeUpdates(this); 

    } 

prefs = getSharedPreferences("Prefs", 
     Context.MODE_PRIVATE); 





lm = (LocationManager) this.getSystemService(LOCATION_SERVICE); 

Criteria criteria = new Criteria(); 
criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
String provider = lm.getBestProvider(criteria, false); 
////* Just GPS is Listed in this List , Google Location is Enabled but Not Detected  
/*and Note the Parameter 'false' to get the list of all avaible provider,enable or not 
Toast.makeText(this, provider, Toast.LENGTH_LONG).show(); */ 
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, this); 




if(IsFromWidget != true){ 
str2 = get.getStringExtra("num"); 
} 
CheckNetworkState(); 
return 0; 


} 

    public void onDestroy() 
{ 
super.onDestroy(); 
if (lm != null){ 

     lm.removeUpdates(this); 

    } 
} 
private void CheckNetworkState() { 


       if (lm != null){ 

         lm.removeUpdates(this); 

        } 
       stopSelf(); 
       } 






    } 





public void onLocationChanged(Location arg0) { 
    // TODO Auto-generated method stub 

lat = arg0.getLatitude(); 
lon = arg0.getLongitude(); 


if (lat == 0 && lon == 0){ 


} 

} 


} 

if(IsFromWidget = true){ 



if (lat == 0 && lon == 0){ 


} 
} 


stopSelf(); 
} 

public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 


     } 



public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 

} 

public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 



@Override 
public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 

} 

但它唯一的回报GPS和我的谷歌位置设置为Enabled,和IM连接3G或WIFI,它工作得很好,当我在使用Android 2.3.x,请不要在代码错误处注意,我在此处发布前编辑了代码。

谢谢。

+1

您的代码格式化疯了! –

+0

'大声笑'我刚刚编辑我的代码,并删除了一些东西,然后张贴在这里... – CELB

回答

1

如果你试图让你的位置,你可以这样做:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

Criteria crit = new Criteria(); 
provider = lm.getBestProvider(crit, false); 
Location location = lm.getLastKnownLocation(provider); 

并成立了LocationListener的类

public class MyLocationListener implements LocationListener { 

    public void onLocationChanged(Location loc){ 


    } 

    public void onProviderDisabled(String provider) { 


    } 


    public void onProviderEnabled(String provider) { 

    } 


    public void onStatusChanged(String provider, int status, Bundle extras) { 

    } 
} 

这至少是一个好的开始为您服务。祝你好运!

+0

谢谢你答案:)但这不是对我有帮助,我会把我的代码... – CELB

+0

你正在使用手机,或你在测试应用程序时使用模拟器吗?你的代码很混乱,很难阅读,所以没有太多的帮助。您是否试图让用户知道哪个提供商正在使用,但它没有从您的吐司中显示,或者是您无法获取位置显示的问题? – Fumler

+0

不,即时通讯使用我的手机银河S2 i9100G运行Android 4.1.x,这也是一个应用程序本地化手机... – CELB

3

记得设置你的权限在AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
+0

是全部需要权限设置和工作正常在Android <4.xx – CELB

+0

@Singo das dingo欢迎来到stackoverflow!我想通知您,您不应该提问作为答案。 –

+0

@Jordan Richards我认为这是非常丰富的信息,以及传达信息的好方法。我现在改了它,因为我显然已经超出了我的标准。感谢您的愉快欢迎... –