2013-03-06 84 views
0

我得到一个抛出:SecurityException在地理编码

java.lang.SecurityException: Not allowed to bind to service Intent { act=com.android.location.service.GeocodeProvider pkg=com.google.android.location } 

试图豆形软糖我的设备上做获取地理编码。

Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault());     
try {      
    List<Address> listAddresses = geocoder.getFromLocation(latitude, longitude, 1); 
    if (null != listAddresses && listAddresses.size() > 0) 
     currentAddress =listAddresses.get(0); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

我有权限ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATIONINTERNET增加。如何避免这种情况一直得到地理编码?


的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="xxx" 
    android:versionCode="15" 
    android:versionName="0.5" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="16" /> 

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

    <permission 
     android:name="xxx.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="xxx.permission.C2D_MESSAGE" /> 
    <!-- App receives GCM messages. --> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <!-- GCM connects to Google Services. --> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <!-- GCM requires a Google account. --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <!-- Keeps the processor from sleeping when a message is received. --> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.NETWORK" /> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 

    <application 
     android:allowBackup="true" 
     android:hardwareAccelerated="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".DashboardActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
      android:windowSoftInputMode="adjustPan" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" 
      android:screenOrientation="portrait" > 
     </activity> 

     <receiver 
      android:name="com.google.android.gcm.GCMBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

       <category android:name="xxx" /> 
      </intent-filter> 
     </receiver> 

     <service android:name="xxx.GCMIntentService" /> 

     <meta-data 
      android:name="com.facebook.sdk.ApplicationId" 
      android:value="@string/app_id" /> 

     <activity android:name="com.facebook.LoginActivity" > 
     </activity> 
    </application> 

</manifest> 

(包名称被xxx取代。)

+0

plz添加AndroidManifest.xml文件xml – 2013-03-06 04:47:45

+1

似乎[问题](https://code.google.com/p/android/issues/detail?id=39635) – StarPinkER 2013-03-06 04:59:42

+0

@JermaineXu,是的,我看到了,有没有尽管如此,一个解决方法来获取地理编码?在清单中正确添加 – Alok 2013-03-06 05:16:15

回答

1

替换该行

Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault()); 

Geocoder geocoder = new Geocoder(<Your Activity Name>.this, Locale.getDefault()); 

也请大家有没有应用程序标记(前一次发生在我身上)下下舱单标签添加这些权限。

否则我不认为你的代码有什么问题。 如果问题仍然存在,请尝试重新启动设备,然后再次尝试运行代码,因为这可能是硬件问题。

+0

权限。这段代码在SherlockFragment中。但那不是它看起来的问题。 – Alok 2013-03-06 05:25:11

+0

重新启动设备。但是想要为最终用户处理它而不让他重新启动。 – Alok 2013-03-06 05:26:17

+1

好吧,这不会经常发生,您可以创建一个对话框,要求用户在处理此异常的catch块上重新启动设备。我的意思是这是报告的错误,我们不能做太多关于它 – 2013-03-06 05:28:22

1

检查您的Android清单代码。

通常,java.lang.SecurityException发生,因为您可能输入两个指向相同活动的条目。删除第二个,并检查一次。