質問

I have a problem, my android app return me security error : Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL.

I already have this permission on my android manifest. The code which give me this error is the following :

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));

    }

and i use this code here :

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));

It works perfectly on my emulator, and the latitude and longitude have the right value. But on my phone (samsung galaxy S4), it return latitude = 0 and longitude = 0 with the error i told you. I really don't understand why i have this error. Thanks in advance for the tips.

正しい解決策はありません

他のヒント

There are times when this particular error is actually misleading, and is caused by other runtime problems.

I documented one such example here - a NullPointerException thrown down deep ended up being reported as this same error, even though it had nothing to do with cross-user permissions.

I'm not certain that this is the case for you, but it's something to check on.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top