2011-03-10 47 views
2

我只是複製Android提供的示例同步應用程序中使用的代碼(找到here)。Android帳戶同步給我一個類未找到錯誤...但它不應該

所以它應該工作......但是當我安裝到我的手機,我得到印刷以下錯誤:

03-10 14:44:54.364: ERROR/AndroidRuntime(9459): Uncaught handler: thread main exiting due to uncaught exception 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459): java.lang.RuntimeException: Unable to instantiate service com.test.sync.authenticator.AuthenticationService: java.lang.ClassNotFoundException: com.test.sync.authenticator.AuthenticationService in loader [email protected] 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2764) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at android.app.ActivityThread.access$3200(ActivityThread.java:119) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1917) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at android.os.Looper.loop(Looper.java:123) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at dalvik.system.NativeStart.main(Native Method) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459): Caused by: java.lang.ClassNotFoundException: com.test.sync.authenticator.AuthenticationService in loader [email protected] 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2761) 
03-10 14:44:54.374: ERROR/AndroidRuntime(9459):  ... 10 more 

它說AuthenticatorService類不包括在我的包中找到......我有一個延伸服務AuthenticatorService類:

package com.test.sync; 

import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 

public class AuthenticationService extends Service { 

     private Authenticator mAuthenticator; 

     @Override 
     public void onCreate() { 
      mAuthenticator = new Authenticator(this); 
     }  

     @Override 
     public IBinder onBind(Intent arg0) { 
      return mAuthenticator.getIBinder(); 
     } 


} 

這裏是清單:

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
/** 
* Copyright (c) 2010, The Android Open Source Project 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
*  http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 
--> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.test.sync" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-permission 
     android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission 
     android:name="android.permission.USE_CREDENTIALS" /> 
    <uses-permission 
     android:name="android.permission.MANAGE_ACCOUNTS" /> 
    <uses-permission 
     android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> 
    <uses-permission 
     android:name="android.permission.INTERNET" /> 
    <uses-permission 
     android:name="android.permission.WRITE_SETTINGS" /> 
    <uses-permission 
     android:name="android.permission.WRITE_SECURE_SETTINGS" /> 
    <uses-permission 
     android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission 
     android:name="android.permission.WRITE_CONTACTS" /> 
    <uses-permission 
     android:name="android.permission.READ_SYNC_STATS" /> 
    <uses-permission 
     android:name="android.permission.READ_SYNC_SETTINGS" /> 
    <uses-permission 
     android:name="android.permission.WRITE_SYNC_SETTINGS" /> 

    <uses-sdk android:minSdkVersion="5" /> 

    <application 
     android:icon="@drawable/icon" 
     android:label="@string/label"> 
     <!-- The authenticator service --> 
     <service 
      android:name=".authenticator.AuthenticationService" 
      android:exported="true"> 
      <intent-filter> 
       <action 
        android:name="android.accounts.AccountAuthenticator" /> 
      </intent-filter> 
      <meta-data 
       android:name="android.accounts.AccountAuthenticator" 
       android:resource="@xml/authenticator" /> 
     </service> 
     <service 
      android:name=".syncadapter.SyncService" 
      android:exported="true"> 
      <intent-filter> 
       <action 
        android:name="android.content.SyncAdapter" /> 
      </intent-filter> 
      <meta-data 
       android:name="android.content.SyncAdapter" 
       android:resource="@xml/syncadapter" /> 
      <meta-data 
       android:name="android.provider.CONTACTS_STRUCTURE" 
       android:resource="@xml/contacts" /> 
     </service> 
     <activity 
      android:name=".authenticator.AuthenticatorActivity" 
      android:label="@string/ui_activity_title" 
      android:theme="@android:style/Theme.Dialog" 
      android:excludeFromRecents="true" 
      > 
      <!-- 
       No intent-filter here! This activity is only ever launched by 
       someone who explicitly knows the class name 
      --> 
     </activity> 
    </application> 
</manifest> 

直接從示例代碼。有沒有人有獲得帳戶工作的經驗?如有必要,我可以提供更多代碼,但只需從Android提供的示例代碼中逐行重寫即可。運行這個的設備在2.1上。謝謝!

+1

你的AndroidManifest.xml中有什麼? –

+0

我現在將它添加到帖子中。它直接來自示例應用程序,當然包也會相應更改。 – JMRboosties

回答

2

您的AndroidManifest.xml聲明

android:name=".authenticator.AuthenticationService" 

你AuthenticatorService.java在com.test.sync包,並實現了AuthenticationService,因此它在com.test.sync.AuthenticationService。

您應該從清單中刪除.authenticator。

相關問題