我有问题,我的Android应用程序返回我的安全错误: 权限拒绝:用户的获取/设置设置要求以用户-2运行,但是从用户0调用;这需要android.permission.INTERACT_ACROSS_USERS_FULL。
我的Android清单上已经拥有此权限。 给我这个错误的代码如下:
public static JSONObject getLocationInfo(String address) {
HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?address=" +address+"&ka&sensor=false");
HttpClient client = new DefaultHttpClient();
HttpResponse response;
StringBuilder stringBuilder = new StringBuilder();
try {
response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1) {
stringBuilder.append((char) b);
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
JSONObject jsonObject = new JSONObject();
try {
jsonObject = new JSONObject(stringBuilder.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonObject;
}
public static GeoPoint getGeoPoint(JSONObject jsonObject) {
Double lon = new Double(0);
Double lat = new Double(0);
try {
lon = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lng");
lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lat");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));
}
我在这里使用此代码:
String addr_tmp = addr.replaceAll(" ", "%20");
GeoPoint p1 =getGeoPoint(getLocationInfo(addr_tmp));
latitude = String.valueOf(p1.getLatitudeE6() / 1E6);
longitude = String.valueOf(p1.getLongitudeE6() / 1E6);
params.add(new BasicNameValuePair("latitude", latitude));
params.add(new BasicNameValuePair("longitude", longitude));
它在我的模拟器上完美运行,纬度和经度具有正确的价值。 但是在我的手机上(三星Galaxy S4),它返回纬度= 0和经度= 0,我告诉你错误。 我真的不明白为什么我有这个错误。 提前感谢您的提示。
答案 0 :(得分:0)
有时这个特定错误实际上是误导性的,并且是由其他运行时问题引起的。
我记录了一个这样的例子here - 一个NullPointerException被抛出,最后报告为同样的错误,即使它与跨用户权限无关。
我不确定您是否属于这种情况,但需要检查一下。