Как запустить приложение в Android при включенном мобильном телефоне? - PullRequest
0 голосов
/ 13 января 2012

Привет, у меня есть приложение, использующее фоновый сервис. Оно работает четко. Если мой мобильный телефон выключен, мой сервис отключен. Когда мое приложение запущено, создается только мой фоновый сервис. Я хочу перезапустить сервис снова когда мобильный выключить? Является ли это возможным? Кто-нибудь объясните с кодом

обновление

public class loginForm extends Activity 
{
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView (R.layout.login);
receiver = new ConnectionReceiver();
 registerReceiver(receiver,new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
 }

private class ConnectionReceiver extends BroadcastReceiver{

        private Timer mTimer;
        private TimerTask mTimerTask;

        @Override
        public void onReceive(Context context, Intent intent) {
                NetworkInfo info = intent.getParcelableExtra         (ConnectivityManager.EXTRA_NETWORK_INFO);

                if(null != info)
                {
                        String state = getNetworkStateString(info.getState());
                        if(state.equals("Connected")){
                            mTimer = new Timer();
                            mTimerTask = new TimerTask() {
                                @Override
                                public void run() {
                                    loginForm.this.runOnUiThread(new Runnable() {

                                        @Override
                                        public void run() {

                                            //Toast.makeText(getBaseContext(), "Disenabled provider " + provider,
                                                    ///Toast.LENGTH_SHORT).show();  
                                            try{
                                            insertAllGpsInformation();
                                            }
                                            catch(Exception e)
                                         {
                                            Toast.makeText(getBaseContext(), "Your Net Connected or Not Login to Net"+"", Toast.LENGTH_LONG).show();
                                            Log.e("Upload Picture Error:",e.getMessage());
                                         }
                                        }


                                    });

                               }
                            };
                            mTimer.scheduleAtFixedRate(mTimerTask,180000,180000);
                        }


                        }
        }   
                }

}

Ответы [ 3 ]

0 голосов
/ 13 января 2012

Вы должны зарегистрировать BroadcastReceiver и найти BOOT_COMPLETED Intent.

Вот ссылка с некоторыми деталями: http://androidgps.blogspot.com/2008/09/starting-android-service-at-boot-time.html

Правильно ли я понял ваш вопрос?

0 голосов
/ 13 января 2012

создать Broadcast Receiver, который с намерением ЗАГРУЗИТЬ ЗАВЕРШЕНО.

для получения дополнительной справки перейдите по следующим ссылкам:

  1. http://blog.gregfiumara.com/?p=82
  2. http://marakana.com/forums/android/examples/60.html

Вы можете использовать

public class BootReceiver extends BroadcastReceiver
{
   @Override
   public void onReceive(Context context, Intent intent)
   {
      // TODO Auto-generated method stub
      Log.i("BootReceiver :: Start Booting..");

      Intent i = new Intent(context, StartService.class);    // Start your service class
           i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
           context.startActivity(i);    
   }
   }

и используйте вещательный приемник в androidmanifest.xml как

<receiver android:name=".receiver.BootReceiver">
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver>
0 голосов
/ 13 января 2012

Зарегистрируйтесь для ACTION_BOOT_COMPLETED ( Подробнее см. Здесь ). Запустите свой сервис при загрузке.

...