Problem: AutoStart On Boot Up causing classcastexception..
I am doing Location based application , I want to run the app whenever the phone bootup,So that my app will be running continuously, I just want to start the service as soon as the phone loads all the service.
I have wrote broadcast receiver method and in mainfest xml even set the receiver and permission I am writing the following code but I am getting runtime error, I even tried to remove the activity and run but its causing the error . please suggest me some solution.
MainFest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.omkar_gpslocation"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.omkar_gpslocation.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.omkar_gpslocation.Activity_Settings"
android:label="@string/title_activity_activity__settings" >
</activity>
<receiver android:enabled="true" android:name="com.example.omkar_gpslocation.MainActivity"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
</manifest>
MainActivity
private BroadcastReceiver MyReceiver= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent("com.example.omkar_gpslocation");
context.startService(serviceIntent);
}
};
Logcat:
02-04 13:21:08.462: E/AndroidRuntime(503): FATAL EXCEPTION: main
02-04 13:21:08.462: E/AndroidRuntime(503): java.lang.RuntimeException: Unable to instantiate receiver com.example.omkar_gpslocation.MainActivity: java.lang.ClassCastException: com.example.omkar_gpslocation.MainActivity
02-04 13:21:08.462: E/AndroidRuntime(503): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1873)
02-04 13:21:08.462: E/AndroidRuntime(503): at android.app.ActivityThread.access$2400(ActivityThread.java:155)
02-04 13:21:08.462: E/AndroidRuntime(503): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1049)
02-04 13:21:08.462: E/AndroidRuntime(503): at android.os.Handler.dispatchMessage(Handler.java:130)
02-04 13:21:08.462: E/AndroidRuntime(503): at android.os.Looper.loop(SourceFile:351)
02-04 13:21:08.462: E/AndroidRuntime(503): at android.app.ActivityThread.main(ActivityThread.java:3820)
02-04 13:21:08.462: E/AndroidRuntime(503): at java.lang.reflect.Method.invokeNative(Native Method)
02-04 13:21:08.462: E/AndroidRuntime(503): at java.lang.reflect.Method.invoke(Method.java:538)
02-04 13:21:08.462: E/AndroidRuntime(503): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:969)
02-04 13:21:08.462: E/AndroidRuntime(503): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:727)
02-04 13:21:08.462: E/AndroidRuntime(503): at dalvik.system.NativeStart.main(Native Method)
02-04 13:21:08.462: E/AndroidRuntime(503): Caused by: java.lang.ClassCastException: com.example.omkar_gpslocation.MainActivity
02-04 13:21:08.462: E/AndroidRuntime(503): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1864)
02-04 13:21:08.462: E/AndroidRuntime(503): ... 10 more
You have to write your Receiver in its own class. Do not write it as a Field in an Activity.
If you want to register a receiver in the Manifest file it have to be in its own file. Create a new class that extends BroadcastReceiver in a new file. Then use the name of this class as the receiver name in the manifest instead of MainActivity.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With