Android应用在设备启动时崩溃

时间:2012-12-21 09:51:24

标签: android

我正在开发一个需要在Android Boot

上启动BackgroundService的应用程序

这是我在Android Boot

上启动BroadcastReceiver时使用的代码
public class StartOnBootService extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        try
        {
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
            Intent serviceIntent = new Intent();
            serviceIntent.setAction("com.package.myApplicationPackage.BackgroundService");
            context.startService(serviceIntent);
        }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

这是我的BackgroundService.class

public class BackgroundService extends Service {

   @Override
   public IBinder onBind(Intent intent) {
      return null;
   }

   @Override
   public void onCreate() {
      //code to execute when the service is first created
       Toast.makeText(getBaseContext(), "BACKGROUND SERVICE STARTED", Toast.LENGTH_LONG).show();
   }

   @Override
   public void onDestroy() {
      //code to execute when the service is shutting down
   }

   @Override
   public void onStart(Intent intent, int startid) {
      //code to execute when the service is starting up
   }
}

这是我在Android启动时设法从CatLog狙击的错误日志。

12-21 10:28:01.279: E/EmbeddedLogger(1710): App crashed! Process: com.package.myApplicationPackage
12-21 10:28:01.289: E/EmbeddedLogger(1710): App crashed! Package: com.package.myApplicationPackage v1 (1.0)
12-21 10:28:01.289: E/EmbeddedLogger(1710): Application Label: myApp Label

我的AndroidManifest.xml文件

        </service>
        <service android:name=".BackgroundService">

            <intent-filter>
                <action android:name="com.package.myApplicationPackage.BackgroundService" />
            </intent-filter>
        </service>
        <receiver
            android:name=".receiver.StartOnBootService"
            android:enabled="true"
            android:exported="true"
            android:label="StartOnBootService">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

2 个答案:

答案 0 :(得分:3)

您广播的接收者名称和Android清单接收者名称完全不同。

StartOnBootService或显示为StartMyServiceAtBootReceiver

答案 1 :(得分:0)

在抢过stackoverflow之前查看清单文件可能是一个好习惯。 我也有一个类似的问题,“启动后崩溃”,并注意到我的包名称错误,因为我的一个接收器仓促复制粘贴操作。

<receiver android:name="com.somepackage.broadcast.ConnectionChangeReceiver" />

确实有一个拼写错误

<receiver android:name="com.somepackage.broadcast.broadcast.ConnectionChangeReceiver" />

纠正它显然解决了我的问题。

相关问题