receivers - Android BroadcastReceiver, servicio de ejecución automática después de reiniciar el dispositivo
iniciar aplicacion automaticamente android studio (4)
Aunque todas las respuestas anteriores eran correctas, sin embargo, desde Android Oreo
ponen alguna limitación en los servicios en segundo plano.
Compruebe los límites de ejecución en segundo plano para saber más sobre los límites de fondo en Android O.
No puede iniciar un servicio directamente desde BroadCastReceiver cuando la aplicación está en segundo plano.
Sin embargo, puede iniciar un servicio en primer plano desde el receptor llamando a startForegroundService()
o usar JobIntentService ya que no existe tal limitación con JobIntentService.
Hola, estoy escribiendo una aplicación, que es cuando el teléfono se reinicia, el servicio se iniciará automáticamente en lugar de hacer clic en la aplicación.
Aquí está mi código para
BootCompleteReceiver.java
package com.example.newbootservice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BootCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, MsgPushService.class);
context.startService(service);
}
}
MsgPushService.java
package com.example.newbootservice;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
public class MsgPushService extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
return Service.START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroy", Toast.LENGTH_LONG).show();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
MainActivity.java (no estoy seguro de si necesito esto)
package com.example.newbootservice;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startService(new Intent(getBaseContext(), MsgPushService.class));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Manifiesto
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.newbootservice"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<service android:name=".MsgPushService"/>
<receiver android:name=".BootCompleteReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Quiero que el servicio se inicie automáticamente después de reiniciar en lugar de iniciarlo manualmente.
Primero haz esto
1) En su elemento <manifest>
:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
EDITAR:
Solución simple e inteligente:
-> Servicio de inicio automático en el inicio del dispositivo
Te olvidaste de los permisos
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
también pruebe estos permisos, puede ayudarle. Si está utilizando teléfonos htc, se requieren estos permisos
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>