2012-04-09 1 views
2

기본적으로 BroadcastReceiver에서 단일 업데이트를 수신하기를 원하며 어떤 이유로 모든 제공자가 내 액세스에서 비활성화되어 있습니다. 여기에 코드LocationManager GetProviders (true) 공급자를 반환하지 않습니다.

LocationManager locationManager = (LocationManager) 
          context.getSystemService(Context.LOCATION_SERVICE); 
Criteria criteria = new Criteria(); 
criteria.setPowerRequirement(Criteria.POWER_LOW); 
String majorProvider = locationManager.getBestProvider(criteria, true); 
Log.d("location test", "major provider " + majorProvider); 
List<String> allProviders = locationManager.getAllProviders(); 
for(int i=0; i < allProviders.size();i++) { 
    Log.d("location test", "provider " + i + ": " + allProviders.get(i)); 
} 
Log.d("location test", "enabled..."); 
allProviders = locationManager.getProviders(true); 
for(int i=0; i < allProviders.size();i++) { 
    Log.d("location test", "enabled provider " + i + ": " + allProviders.get(i)); 
} 

은 내 로그 캣 나는 문제가 나는 BroadcastReceiver에서이 모두를 호출하고 있다는 것을 추측하고

04-09 11:23:35.763: D/location test(32576): major provider null 
04-09 11:23:35.763: D/location test(32576): provider 0: network 
04-09 11:23:35.763: D/location test(32576): provider 1: passive 
04-09 11:23:35.763: D/location test(32576): provider 2: gps 
04-09 11:23:35.763: D/location test(32576): enabled... 

결과,하지만 난 다른 곳에서 그것을 컨텍스트를 전달 시도 . BroadcastReceiver에서 LocationManager에 액세스 할 수 있습니까?

+0

모든 제공 업체가 활성화되었거나하지 않습니까? – ngesh

+0

@sandy 그들은 모두 비활성화되어 있었고, 단순히 잊혀진 권한이었습니다. – MikeIsrael

답변

6

와우 나는 그런 바보 같은 느낌. 음, 그건 단순히 허가 문제였습니다. 다른 사용자가이 항목을 다시 실행하는 경우 매니페스트에 사용 권한을 추가하십시오.

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

런타임에 질문하는 것을 포함하여 내 응용 프로그램에 권한이 있으며 여전히 문제가 있습니다. :( – Renann