检查权限是否可用于 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>
我建议阅读初始文档
定义位置时,我得到红色下划线并显示:“调用需要权限,用户可能会拒绝:代码应明确检查权限是否可用(使用 '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>
我建议阅读初始文档