java Android:位置服务权限
我从位置管理器访问位置时遇到问题
这就是错误所在
04-24 11:12:10.999 9378-9378/com.example.devandrin.myapplication D/HomeActivity: "network" location provider requires ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission.
位置函数的代码
LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean GPS;
try {
GPS = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch (Exception e) {
GPS = false;
}
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
boolean data = info != null;
if (!data || !GPS) {
Utilities.MakeSnack(findViewById(R.id.cLayout), "Unable to get location");
} else {
try {
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1200, 50, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
Location l = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
String url = "/setuserlocation/" + sp.getString("userID", "") +
"/" + l.getLatitude() +
"/" + l.getLongitude();
StringRequest sr = new StringRequest(StringRequest.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Utilities.MakeToast(getInstance(), "Location Updated");
GregorianCalendar gc = new GregorianCalendar();
Date date = gc.getTime();
SharedPreferences.Editor e = sp.edit();
e.putString("DatePosted", date.toString());
e.commit();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Utilities.MakeToast(getInstance(), "Location Wasn't updated");
}
});
RequestQueueSingleton.getInstance(this).getRequestQueue().add(sr);
} catch (SecurityException e) {
Log.d("HomeActivity", e.getMessage());
}
}
以及清单中设置的权限
<uses-permission 安卓:name="安卓.permission.GET_ACCOUNTS" />
<uses-permission 安卓:name="安卓.permission.READ_PROFILE" />
<uses-permission 安卓:name="安卓.permission.READ_CONTACTS" />
<uses-permission 安卓:name="安卓.permission.ACCESS_NETWORK_STATE" />
<uses-permission 安卓:name="安卓.permission.ACCESS_COARSE_LOCATION" />
<uses-permission 安卓:name="安卓.permission.ACCESS_FINE_LOCATION" />
<uses-permission 安卓:name="安卓.permission.INTERNET" />
应用程序的api级别为16,因此我无法在运行时请求权限,应用程序也不会在安装时请求权限,有人能帮我解决这个问题吗
# 1 楼答案
像这样获得运行时许可
如果权限尚未授予,则覆盖onRequestPermission结果如下