2011-09-29 3 views
0

내 Android 앱이 로컬 주소록의 변경 사항에 응답하고 필요에 따라 동기화하려고합니다.Android 서비스를 찾을 수 없음 (변경 감지 변경)

나는 그 일을하기 위해 백그라운드에서 실행될 서비스를 만들어야한다고 생각합니다. 나는 그랬다. 나는 그것을 실행하려고 방법

[exec] [DEBUG] I/ActivityManager( 60): Starting activity: Intent { cmp=ti.test/my.Activity (has extras) } 
[exec] [DEBUG] E/aas  (1812): (main) [490639,495460] people uri:content://contacts/people 
[exec] [DEBUG] W/ActivityManager( 60): Unable to start service Intent { cmp=ti.test/.MyService }: not found 

이것이다 : 내 응용 프로그램 실행 및 I 서비스를 시작하려고 할 때

그러나이 작동하지 않습니다 ... 그것은 실패

startService(new Intent(activity, MyService.class)); 

이 내 manifest.xml의 헛소리의 일부는 :

<android xmlns:android="http://schemas.android.com/apk/res/android"> 
    <manifest android:versionCode="1" android:versionName="1"> 
     <uses-sdk android:minSdkVersion="4"/> 
     <supports-screens android:anyDensity="true" 
      android:largeScreens="true" android:normalScreens="true" android:smallScreens="true"/> 
     <application> 
      <service android:name="ti.test.MyService"/> 
     </application> 

    </manifest> 
</android> 

이 서비스 클래스입니다 :

package ti.test; 

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

import android.os.IBinder; 
import android.util.Log; 

import android.database.ContentObserver; 
import android.provider.Contacts.People; 

public class MyService extends Service 
{ 
    private static final String TAG = "MyService"; 



    private class MyContentObserver extends ContentObserver { 

     public MyContentObserver() { 
      super(null); 
     } 

     @Override 
     public void onChange(boolean selfChange) { 
      super.onChange(selfChange); 
      Log.e ("DatabaseTable" , "****************************** contact database change detected *************************************"); 
     } 

     @Override 
     public boolean deliverSelfNotifications() { 
      return true; 
     } 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     Log.d("MyService", "starting........"); 
     MyContentObserver contentObserver = new MyContentObserver(); 
     getContentResolver().registerContentObserver (People.CONTENT_URI, true, contentObserver); 


    } 




    @Override 
    public void onDestroy() { 
     Log.d("MyService", "stopping........"); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Log.i("LocalService", "Received start id " + startId + ": " + intent); 
     // We want this service to continue running until it is explicitly 
     // stopped, so return sticky. 
     return START_STICKY; 
    } 


    @Override 
    public void onStart(Intent intent, int startid) { 
     Log.d("MyService", "onStart........"); 

    } 
} 

감사합니다!

+0

누구? 여전히 도움이 필요합니다 –

+0

도움 ... 여전히 필요합니다. –

답변

1

서비스중인 클래스를 생성하면 안됩니다. contectResolver 클래스를 정의하고이를 활동이나 사용하려는 위치에 등록해야합니다.