2015-01-29 2 views
4

백그라운드에서 일부 파일의 압축을 푸는 중입니다. 그래서 Google 튜토리얼에서 IntentService를 사용합니다. 이 같은 AndroidManifest를 선언 내 서비스 클래스 :명시 적 활동 클래스 {{}을 (를) 찾을 수 없습니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="org.osmdroid"> 

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


<application 
    android:configChanges="orientation|screenSize|keyboardHidden" 
    android:hardwareAccelerated="true" 
    android:icon="@drawable/ecn_icon" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 


    <activity 
     android:name=".MapActivity" 
     android:icon="@drawable/ecn_icon" 
     android:label="test" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".SettingsActivity" 
     android:label="@string/title_activity_settings"> 
    </activity> 
    <service 
     android:name=".UnZipService" 
     android:exported="false"/> 
</application> 
활동에

, 내가

IntentFilter intentFilter = new IntentFilter(DownloadManager 
      .ACTION_DOWNLOAD_COMPLETE); 

    receiverDownloadComplete = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      long reference = intent.getLongExtra(DownloadManager 
        .EXTRA_DOWNLOAD_ID, -1); 
      if (myDownloadReference == reference) { 

        ... 
       switch (status) { 
        case DownloadManager.STATUS_SUCCESSFUL: 

         Intent mServiceIntent = new Intent(context, UnZipService.class); 
         mServiceIntent.setData(Uri.parse(savedFilePath)); 
         startActivity(mServiceIntent); 

         break; 
        ... 
       } 
       cursor.close(); 
      } 
     } 
    }; 
    registerReceiver(receiverDownloadComplete, intentFilter); 

그리고 여기에 서비스를이 :

public class UnZipService extends IntentService { 
public UnZipService() { 
    super("UnZipService"); 
} 

@Override 
protected void onHandleIntent(Intent workIntent) { 
    String dataString = workIntent.getDataString(); 
    Log.v("IntentURI", dataString); 
    Toast.makeText(this, "Installing....", Toast.LENGTH_SHORT).show(); 
} 

그냥 시험을 위해 축배를 표시해야합니다 하지만 항상 오류가 발생합니다.

01-29 19:08:25.740 15521-15521/org.osmdroid E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE flg=0x10 pkg=org.osmdroid (has extras) } in [email protected] 
      at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768) 
      at android.os.Handler.handleCallback(Handler.java:725) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:150) 
      at android.app.ActivityThread.main(ActivityThread.java:5147) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {org.osmdroid/org.osmdroid.UnZipService}; have you declared this activity in your AndroidManifest.xml? 
      at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618) 
      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417) 
      at android.app.Activity.startActivityForResult(Activity.java:3404) 
      at android.app.Activity.startActivityForResult(Activity.java:3365) 
      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817) 
      at android.app.Activity.startActivity(Activity.java:3600) 
      at android.app.Activity.startActivity(Activity.java:3568) 
      at org.osmdroid.SettingsActivity$1.onReceive(SettingsActivity.java:148) 
      at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:758) 
at android.os.Handler.handleCallback(Handler.java:725) 
            at android.os.Handler.dispatchMessage(Handler.java:92) 
            at android.os.Looper.loop(Looper.java:150) 
            at android.app.ActivityThread.main(ActivityThread.java:5147) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:511) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
            at dalvik.system.NativeStart.main(Native Method)  

동일한 폴더 (org.osmdroid)의 둘 다 (클래스 및 활동). 경로처럼 보인다 것은

+0

오류가 말한 것을 수행하고이를 매니페스트에 추가 했습니까? – tyczj

+0

'UnZipService'는 활동이 아닌 서비스입니다. 그것을 서비스로 시작하십시오. 내 대답을 참조하십시오 – Rohit5k2

답변

13

당신은

변경에게 활동으로 서비스를 시작하고 ... 괜찮습니다,하지만 문제가 나타나고 나는 더 이상 아이디어가 없습니다

Intent mServiceIntent = new Intent(context, UnZipService.class); 
mServiceIntent.setData(Uri.parse(savedFilePath)); 
startActivity(mServiceIntent); 

Intent mServiceIntent = new Intent(context, UnZipService.class); 
mServiceIntent.setData(Uri.parse(savedFilePath)); 
startService(mServiceIntent); // Only this line is changed 
+1

하나님 ...이 오타의 많은 시간을 보내십시오! 고마워요! – tonyAndr

+2

광기 !!! 고맙습니다 – Roon13

관련 문제