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
Author by
tonyAndr
Updated on June 14, 2022Comments
-
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 about 9 yearsGod... Spend so much time cuz of this typo! Thanks a lot!