Не удается завершить прослушиватель After Boot в Android

Я не могу запустить службу, как только устройство загружается. Мои классы обслуживания и получателя следующие.

    package android_programmers_guide.BroadcastReceiver1;
   import java.util.ArrayList;
   import java.util.List;
   import java.util.Timer;
   import java.util.TimerTask;
   import android.app.ActivityManager;
   import android.app.Service;
   import android.content.Intent;
   import android.content.pm.PackageManager;
   import android.os.IBinder;
   import android.util.Log;
   import android.widget.Toast;
   public class MyService extends Service {
 /**
  * Delay until first exeution of the Log task.
  */
 private final long mDelay = 0;
 /**
  * Period of the Log task.
  */
 private final long mPeriod = 500;
 /**
  * Log tag for this service.
  */ 
 private final String LOGTAG = "**BootDemoService**";
 /**
  * Timer to schedule the service.
  */
 private Timer mTimer;

 /**
  * Implementation of the timer task.
  */
 private class LogTask extends TimerTask {
  public void run() {
   Log.i(LOGTAG, "scheduled");
  }
 }
 private LogTask mLogTask; 

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

 @Override
 public void onCreate() {
  super.onCreate();
  Log.i(LOGTAG, "created");
  mTimer = new Timer();
  mLogTask = new LogTask();
 }

 @Override
 public void onStart(final Intent intent, final int startId) {
  super.onStart(intent, startId);
  Log.i(LOGTAG, "started");
  mTimer.schedule(mLogTask, mDelay, mPeriod);
 }
}

Это класс приемника.

package android_programmers_guide.BroadcastReceiver1;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyStartupIntentReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(final Context context, final Intent bootintent) {
  Intent mServiceIntent = new Intent();
mServiceIntent.setAction("android_programmers_guide.BroadcastReceiver1.MyService");
  context.startService(mServiceIntent);
 }
}

И это файл манифеста.

<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android_programmers_guide.BroadcastReceiver1"
android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:name=".MyService">
        <intent-filter>
            <action android:name="android_programmers_guide.BroadcastReceiver1.MyService">
            </action>
        </intent-filter>
    </service>
    <receiver android:name=".MyStartIntentReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED">
            </action>
        </intent-filter>
    </receiver>
</application>
<uses-sdk android:minSdkVersion="4" />

Пожалуйста, ответьте как можно скорее и заранее спасибо. Ваше здоровье!

PS: я копирую код только из учебника и использую Android Gingerbread с Eclipse Galileo.

После редактирования, как вы сказали, моя служба прошла успешно. Но есть еще проблема. Я не могу начать действие. Мой код выглядит следующим образом:

public void onStart(final Intent intent, final int startId) 
{
 super.onStart(intent, startId);
    Intent intent1 = new Intent();
            intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                  startActivity(intent1);
}

person Renegade    schedule 19.08.2011    source источник


Ответы (2)


Пожалуйста, добавьте эту строку в файл manifest.

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

После редактирования:

public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {  
                Intent pushIntent = new Intent(context,MyService.class);  
                context.startService(pushIntent);           

            } 

   }
person jainal    schedule 19.08.2011
comment
Спасибо. Но я боюсь, что не смогу завершить загрузку приемника. - person Renegade; 19.08.2011

Ваша проблема, кажется, в AndroidManifest.xml

Прежде всего, вы неправильно написали свой **MyStartupIntentReceiver** класс здесь

<receiver android:name=".MyStartIntentReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED">
            </action>
        </intent-filter>
</receiver>

1.) Прежде всего измените вышеуказанную вещь и проверьте ее.

2.) В противном случае удалите <intent-filter> ...</intent-filter> для вашего класса обслуживания.

Это должно быть только

 <service android:enabled="true" android:name=".MyService" />

Надеюсь, вы обязательно сделаете это после того, как сделаете это.

person Lalit Poptani    schedule 19.08.2011
comment
Вы уже проверили ответ, значит ваш вопрос решен? - person Lalit Poptani; 19.08.2011
comment
Я уже упоминал в своем ответе, что вы неправильно пишете MyStartupIntentReceiver как MyStartIntentReceiver в AndroidManifest. - person Lalit Poptani; 19.08.2011
comment
Моя вина. Я проверил, потому что предыдущая проблема была решена, и спасибо всем вам. Но у меня есть еще одна проблема, которую я хочу задать, поэтому я редактирую только этот вопрос. - person Renegade; 19.08.2011