9

我的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>

谢谢

4

3 回答 3

38

这是您需要添加到清单文件中的内容

基于 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 的权限。

于 2011-08-01T14:51:14.467 回答
18

你需要这个

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
于 2011-08-01T14:37:26.817 回答
2

这是您需要添加到清单文件中的内容:

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

用于基于 GPS 的位置或

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

基于网络的位置

如果您想构建一个更通用的应用程序,您可以同时要求这两者。

问候,
斯特凡

于 2011-08-01T14:42:00.803 回答