【发布时间】:2017-09-20 21:47:22
【问题描述】:
我从位置管理器访问位置时遇到问题
这是错误
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 android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
应用程序的 api 级别是 16,因此我无法在运行时请求权限,并且应用程序不会在安装时请求权限,谁能帮我解决这个问题....
【问题讨论】:
-
确保权限不在清单中的应用程序标记中,如果可能,请粘贴整个清单
-
你的 targetSdkVersion 是什么?
-
@AdeelTurk 这是正确的,因为 Internet 权限正在工作,我有一个 webview,我确定它不是
标签: java android android-location locationmanager