Pergunta

MainActivity code is:

    package com.example.testing;

import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public class Boot extends BroadcastReceiver{

        /*@Override
        public void onReceive(Context context, Intent intent) {
                Intent i = new Intent(context, MainActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.addFlags(Intent.FLAG_FROM_BACKGROUND);
                context.startActivity(i);  
        }*/
        @Override
        public void onReceive(Context context, Intent intent) {
            // make sure you receive "BOOT_COMPLETED"
            if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")))
            {
                // Start the service or activity 
                Intent i = new Intent(context, MainActivity.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.addFlags(Intent.FLAG_FROM_BACKGROUND);
                i.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
                try {
                    Thread.sleep(120000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                context.startActivity(i); 
            }
        }

   }
}

Manifest:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.testing"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <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.testing.second"
            android:label="second" >
        </activity>
        <activity
            android:name="com.example.testing.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>
        <receiver android:enabled="true" android:name=".Boot" 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>

In the Emulator the app starts ,(emulator for 4.0.3 ICS) but on my ICS 4.0.4 SonyEricsson it crashs also tested this with a Samsung Galaxy 2.2 Froyo Android still the same problem kindly help.

I added Thread sleep as the app was crashing at phone startup so thought that is happening due to over load of resources on the device this was deemed useless!

I think this the excerpt from LOGCAT that is defining the problem

I/ActivityManager(  274): Start proc com.yahoo.mobile.client.android.mail for broadcast com.yahoo.mobile.client.android.mail/com.yahoo.mobile.client.share.update.SoftwareUpdateSystemBroadcastReceiver: pid=805 uid=10014 gids={3003, 1007, 1015}
D/PhoneStatusBar(  359): disable: < expand icons alerts ticker system_info BACK HOME recent* CLOCK >
D/PhoneStatusBar(  359): disable: < expand icons alerts ticker system_info back* home* recent clock* >
I/ActivityManager(  274): Start proc com.example.testing for broadcast com.example.testing/.Boot: pid=824 uid=10153 gids={}
E/AndroidRuntime(  824): FATAL EXCEPTION: main
E/AndroidRuntime(  824): java.lang.RuntimeException: Unable to instantiate receiver com.example.testing.Boot: java.lang.ClassNotFoundException: com.example.testing.Boot
E/AndroidRuntime(  824):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2111)
E/AndroidRuntime(  824):    at android.app.ActivityThread.access$1500(ActivityThread.java:127)
E/AndroidRuntime(  824):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
E/AndroidRuntime(  824):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  824):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(  824):    at android.app.ActivityThread.main(ActivityThread.java:4441)
E/AndroidRuntime(  824):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  824):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(  824):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(  824):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(  824):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  824): Caused by: java.lang.ClassNotFoundException: com.example.testing.Boot
E/AndroidRuntime(  824):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
E/AndroidRuntime(  824):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime(  824):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime(  824):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2106)
E/AndroidRuntime(  824):    ... 10 more
I/BootReceiver(  274): Copying /proc/last_kmsg to DropBox (SYSTEM_LAST_KMSG)
Foi útil?

Solução

The logcat kind of explains your problem... com.example.testing.Boot does not exists... Which is true as Boot is an inner class of MainActivity, so it should at least have been com.example.testing.MainActivity.Boot.

But, I do not think it is allowed to have an inner class as receiver, as it is unknown to the system which 'outer class' should be invoked? So put it in its own file in the com.example.testing package.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top