我想在启动时启动一个前台服务,但它永远不会启动,但是如果我尝试启动一个正常的后台服务。它开始非常好。前台服务没有在启动时启动
你能让我让我的代码出什么问题吗?
我的代码是: 清单文件:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name="com.test.andsrvfg.AndSrvFgService">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service android:name="AndSrvFgService">
<intent-filter>
<action android:name="com.test.andsrvfg.AndSrvFgService"></action>
</intent-filter>
</service>
</application>
广播接收器来处理ACTION_BOOT_COMPLETED:
public class AndSrvFgStarter extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
Intent i = new Intent();
i.setAction("com.test.andsrvfg.AndSrvFgService");
context.startService(i);
}
}
}
实际的服务是这样的:
public class AndSrvFgService extends Service {
private boolean bForeground = false;
public AndSrvFgService() {
}
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(!bForeground) {
bForeground = true;
Notification note = new Notification(0, null, System.currentTimeMillis());
note.flags |= Notification.FLAG_NO_CLEAR;
startForeground(1242, note);
}
return START_STICKY;
}
@Override
public void onDestroy() {
if(bForeground) {
stopForeground(true);
}
}
你在AndroidManifest.xml中有权限吗? – Lucifer
您确定您清单声明了正确的意图过滤器吗?你没有发布,所以我无法验证我的结果,但这似乎是你的问题。 – AedonEtLIRA
你在测试哪个版本? –