java.lang.RuntimeException: Unable to instantiate service

android, debugging, java

Solution

   public class SMSMonitor extends BroadcastReceiver {

you are SMSMonitor which is a BroadcastReceiver not Service

Intent i = new Intent(context,SMSMonitor.class);
    i.setClass(context, SMSMonitor.class);
    context.startService(i);

Problem

I am trying to code an application that monitors sms messages. I want to start a service from my main Activity class, but the service doesn't start for some reason. I think there might be a problem with how I declared my service in the manifest file or how I call it from my activity. Here is a part of my activity Code: ``` public class TablighBlockActivity extends Activity { /** Called when the activity is first created. */ private ToggleButton toggEnable; public void onCreate(Bundle savedInstanceState) { if (loadState("running")==false){startService(new Intent(this, SMSMonitor.class));} super.onCreate(savedInstanceState); setContentView(R.layout.main); ``` and Here is a part of my Service class: ``` public class SMSMonitor extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context,SMSMonitor.class); i.setClass(context, SMSMonitor.class); context.startService(i); ``` And here is my manifest File: ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="tabligh.block" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="3" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name="SMSMonitor"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> </intent-filter> </receiver> <activity android:name=".TablighBlockActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:enabled="true" android:name=".SMSMonitor" android:process=":smsmonitor" ></service> </application> </manifest> ``` and here is the error log: ``` 06-22 13:46:14.649: W/dalvikvm(1013): threadid=3: thread exiting with uncaught exception (group=0x4000fe70) 06-22 13:46:14.668: E/AndroidRuntime(1013): Uncaught handler: thread main exiting due to uncaught exception 06-22 13:46:15.038: E/AndroidRuntime(1013): java.lang.RuntimeException: Unable to instantiate service tabligh.block.SMSMonitor: java.lang.ClassCastException: tabligh.block.SMSMonitor 06-22 13:46:15.038: E/AndroidRuntime(1013): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2449) 06-22 13:46:15.038: E/AndroidRuntime(1013): at android.app.ActivityThread.access$2800(ActivityThread.java:112) 06-22 13:46:15.038: E/AndroidRuntime(1013): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1744) 06-22 13:46:15.038: E/AndroidRuntime(1013): at android.os.Handler.dispatchMessage(Handler.java:99) 06-22 13:46:15.038: E/AndroidRuntime(1013): at android.os.Looper.loop(Looper.java:123) 06-22 13:46:15.038: E/AndroidRuntime(1013): at android.app.ActivityThread.main(ActivityThread.java:3948) 06-22 13:46:15.038: E/AndroidRuntime(1013): at java.lang.reflect.Method.invokeNative(Native Method) 06-22 13:46:15.038: E/AndroidRuntime(1013): at java.lang.reflect.Method.invoke(Method.java:521) 06-22 13:46:15.038: E/AndroidRuntime(1013): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 06-22 13:46:15.038: E/AndroidRuntime(1013): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 06-22 13:46:15.038: E/AndroidRuntime(1013): at dalvik.system.NativeStart.main(Native Method) 06-22 13:46:15.038: E/AndroidRuntime(1013): Caused by: java.lang.ClassCastException: tabligh.block.SMSMonitor 06-22 13:46:15.038: E/AndroidRuntime(1013): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2446) 06-22 13:46:15.038: E/AndroidRuntime(1013): ... 10 more ``` Thanks.

Original source