Tentei usar o código de amostra no link isto mas parece desactualizado e não funcionou. Então, que mudanças tenho de fazer e a que ficheiros devo fazer para que a minha aplicação comece automaticamente quando o Android terminar de arrancar?
Primeiro, precisa da permissão no seu AndroidManifest.xml
:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Além disso, no seuAndroidManifest.xml
, defina o seu serviço e ouça a acção **BOOT_COMPLETED***:
<service android:name=".MyService" android:label="My Service">
<intent-filter>
<action android:name="com.myapp.MyService" />
</intent-filter>
</service>
<receiver
android:name=".receiver.StartMyServiceAtBootReceiver"
android:label="StartMyServiceAtBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Depois precisa de definir o receptor que receberá a acção BOOT_COMPLETED e iniciar o seu serviço.
public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Intent serviceIntent = new Intent(context, MyService.class);
context.startService(serviceIntent);
}
}
}
E agora o seu serviço deve estar a funcionar quando o telefone arranca.
Ouça o ACTION_BOOT_COMPLETE e faça o que for preciso a partir daí. Há um trecho de código aqui.
Actualização:
A ligação original na resposta está em baixo, por isso, com base nos comentários, aqui está o código da ligação, porque ninguém nunca perderia o código quando as ligações estão em baixo.
No AndroidManifest.xml (parte de aplicação):
<receiver android:enabled="true" android:name=".BootUpReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
...
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
public class BootUpReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, MyActivity.class); //MyActivity can be anything which you want to start on bootup...
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
Além disso, pode utilizar uma aplicação como AutoStart se não quiser modificar o código, para lançar uma aplicação androide no arranque: AutoStart - Sem raiz