Android Permission Denial:这需要android.permission.INTERACT_ACROSS_USERS_FULL

时间:2014-02-22 14:34:24

标签: android security localization

我有问题,我的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,我告诉你错误。 我真的不明白为什么我有这个错误。 提前感谢您的提示。

1 个答案:

答案 0 :(得分:0)

有时这个特定错误实际上是误导性的,并且是由其他运行时问题引起的。

我记录了一个这样的例子here - 一个NullPointerException被抛出,最后报告为同样的错误,即使它与跨用户权限无关。

我不确定您是否属于这种情况,但需要检查一下。