Разрешения диспетчера местоположения Android, которые будут использоваться - PullRequest
8 голосов
/ 01 августа 2011

У меня есть следующий код в моем проекте Android:

locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
bestProvider = locationManager.getBestProvider(criteria, false);
Location currentLocation = locationManager.getLastKnownLocation(bestProvider);
location = currentLocation.getLatitude() + " " + currentLocation.getLongitude();
MyLocation.setText(location);

Я получаю ошибку provider == null. какие разрешения мне нужно использовать?

Мой файл манифеста Android:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.DuckTag"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".DuckTagActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
</manifest>

Спасибо

Ответы [ 3 ]

36 голосов
/ 01 августа 2011

Вот что вам нужно добавить в файл манифеста

GPS-местоположение

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

Сетевое местоположение

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

Предыдущие постеры неверны, если вы хотите использовать оба, тогда требуется только ACCESS_FINE_LOCATION, как описано здесь: http://developer.android.com/guide/topics/location/obtaining-user-location.html

Примечание. Если вы используете как NETWORK_PROVIDER, так и GPS_PROVIDER, то вам нужно запросить только разрешение ACCESS_FINE_LOCATION, потому что это включает разрешение для обоих поставщиков. (Разрешение на ACCESS_COARSE_LOCATION включает разрешение только для NETWORK_PROVIDER.

16 голосов
/ 01 августа 2011

Вам нужно это

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
2 голосов
/ 01 августа 2011

Вот что вам нужно добавить в файл манифеста:

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

для местоположения на основе GPS или

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

для местоположения на основе сети

Вы можете требовать и того, и другого, если хотите создать более универсальное приложение.

Привет,
Стефан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...