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

Posted

技术标签:

【中文标题】Android Permission Denial:这需要 android.permission.INTERACT_ACROSS_USERS_FULL【英文标题】:Android Permission Denial: this requires android.permission.INTERACT_ACROSS_USERS_FULL 【发布时间】:2014-02-22 14:34:24 【问题描述】:

我有一个问题,我的 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】:

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

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

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

【讨论】:

请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(与另一个中途停留的参考相比,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。

以上是关于Android Permission Denial:这需要 android.permission.INTERACT_ACROSS_USERS_FULL的主要内容,如果未能解决你的问题,请参考以下文章

Permission Denial:开放提供者 Android Studio

Android之启动奔溃提示异常java.lang.SecurityException: Permission Denial: startForeground

Android之启动奔溃提示异常java.lang.SecurityException: Permission Denial: startForeground

Android之启动奔溃提示异常java.lang.SecurityException: Permission Denial: startForeground

已解决Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS

使用GAPID报错Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS