0

我正在尝试在启动设备时启动服务。我已经搜索了很多并按照步骤进行操作,但仍然没有成功。一旦手机重新启动,它会在开始时显示“应用程序已意外停止”。我知道它来自接收器文件,但无法弄清楚问题出在哪里。

接收器.java

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class Receiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent arg1) {
        // TODO Auto-generated method stub
        if(arg1.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
        {
            Intent myIntent = new Intent();
            myIntent.setAction("com.androidhive.jsonparsing.UpdateService");
            context.startService(myIntent);
        }
    }   
}

AndroidManifest

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".AndroidJSONParsingActivity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <!-- Single List Item View -->
    <activity
        android:label="Single Menu Item"
        android:name=".SingleMenuItemActivity" >
    </activity>
    <service android:name=".UpdateService">
        <intent-filter>
            <action android:name="com.androidhive.jsonparsing.UpdateService"/>
        </intent-filter>
    </service>
    <receiver android:name=".MyReceiver" 
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>
</application>

有什么我需要添加的,以便服务完美启动。

4

3 回答 3

0

将您的接收器声明AndroidManifest.xml为:

 <receiver android:name=".Receiver" 
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

因为你有 BroadcastReceiver 类,Receiver.class但在 AndroidManifest.xml 中声明它 MyReceiver

于 2013-01-15T09:20:55.877 回答
0

请检查你的 android manifest 它应该是这样的:

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
    android:label="@string/app_name"
    android:name=".AndroidJSONParsingActivity" >
    <intent-filter >
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<!-- Single List Item View -->
<activity
    android:label="Single Menu Item"
    android:name=".SingleMenuItemActivity" >
</activity>
<service android:name=".UpdateService">
    <intent-filter>
        <action android:name="com.androidhive.jsonparsing.UpdateService"/>
    </intent-filter>
</service>
<receiver android:name=".Receiver" 
    android:enabled="true"
    android:exported="false">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

问题在于您的接收者的声明。请检查 android:name 标签,它应该有正确的类名。

于 2013-01-15T09:32:34.530 回答
0

而不是使用

Intent myIntent = new Intent();
myIntent.setAction("com.androidhive.jsonparsing.UpdateService");
context.startService(myIntent);

尝试在接收器中执行此操作

Intent myIntent = new Intent(context, UpdateService.class);
context.startService(myIntent);
于 2016-02-05T06:25:37.473 回答