检查权限是否可用于 GPS_PROVIDER

Checking if permission is available for GPS_PROVIDER

定义位置时,我得到红色下划线并显示:“调用需要权限,用户可能会拒绝:代码应明确检查权限是否可用(使用 'checkPermission')或句柄一个潜在的 'SecurityException'

我该如何解决这个问题?

public class map extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;
private FloatingActionButton plus;
LocationManager lm;
Location location;
double latitude, longitude;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);

    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    if (location==null){
        //Location wasnt gathered
    }else{
        latitude = location.getLatitude();
        longitude = location.getLongitude();
    }



    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    plus = (FloatingActionButton) findViewById(R.id.newPlace);

    plus.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            startActivity(new Intent(map.this, newPlacePop.class));
        }
    });
}

您是否已将适当的权限添加到您的 AndroidManifest?即:

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

你也可以把你的电话包装在

LocationManager enabledManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (enabledManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
    location = enabledManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if (location==null){
         //Location wasnt gathered
    }else{
         latitude = location.getLatitude();
         longitude = location.getLongitude();
    }
}

如果你同时做这两件事,你应该没问题。

在您的 Android 清单中添加以下权限之一作为子权限。许可常见位置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp" >
...
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
...
</manifest>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp" >
...
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
...
</manifest>

我建议阅读初始文档

location google