我正在尝试在启动设备时启动服务。我已经搜索了很多,并按照步骤进行了操作,但仍然无法解决问题。移动设备重新启动后,它会在开头显示“应用程序意外停止”。我知道它来自接收器文件,但无法弄清楚特别是问题所在。
Receiver.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>
我是否需要添加任何内容以便服务正常启动。
答案 0 :(得分: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
声明它
答案 1 :(得分:0)
请检查你的android清单应该是这样的:
<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标签,它应该有正确的类名。
答案 2 :(得分:0)
而不是使用
Intent myIntent = new Intent();
myIntent.setAction("com.androidhive.jsonparsing.UpdateService");
context.startService(myIntent);
尝试在接收器中执行此操作
Intent myIntent = new Intent(context, UpdateService.class);
context.startService(myIntent);