Unable to find explicit activity class {}; have you declared this activity in your AndroidManifest.xml

18,809

You are starting a service as an activity

Change

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

to

Intent mServiceIntent = new Intent(context, UnZipService.class);
mServiceIntent.setData(Uri.parse(savedFilePath));
startService(mServiceIntent); // Only this line is changed
Share:
18,809
tonyAndr
Author by

tonyAndr

Updated on June 14, 2022

Comments

  • tonyAndr
    tonyAndr almost 2 years

    I'm trying unzip some files in background, so I use IntentService like in google's tutorial. My service class declared in AndroidManifest like this:

    <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>
    

    In activity, I have

    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);
    

    And service here:

    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();
    }
    

    It should show toast just for test, but I always get an error:

        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 org.osmdroid.SettingsActivity$1@21292650
                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)    
    

    Both (class and activity) in same folder (org.osmdroid). Seems like paths is ok, but the problem appears and I have no more ideas...

  • tonyAndr
    tonyAndr about 9 years
    God... Spend so much time cuz of this typo! Thanks a lot!